Advertisement
Guest User

Untitled

a guest
Jan 3rd, 2016
391
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 339.03 KB | None | 0 0
  1. #ifndef _REAPER_PLUGIN_FUNCTIONS_H_
  2. #define _REAPER_PLUGIN_FUNCTIONS_H_
  3.  
  4. // REAPER API functions
  5. // Generated by REAPER v5.11/x64
  6.  
  7. /*
  8. *  Copyright 2006 and later, Cockos Incorporated
  9. *
  10. *  This software is provided 'as-is', without any express or implied
  11. *  warranty.  In no event will the authors be held liable for any damages
  12. *  arising from the use of this software.
  13. *
  14. *  Permission is granted to anyone to use this software for any purpose,
  15. *  including commercial applications, and to alter it and redistribute it
  16. *  freely, subject to the following restrictions:
  17. *
  18. *  1. The origin of this software must not be misrepresented; you must not
  19. *     claim that you wrote the original software. If you use this software
  20. *     in a product, an acknowledgment in the product documentation would be
  21. *     appreciated but is not required.
  22. *  2. Altered source versions must be plainly marked as such, and must not be
  23. *     misrepresented as being the original software.
  24. *  3. This notice may not be removed or altered from any source distribution.
  25. */
  26.  
  27. // Note: the C++ pure virtual interfaces used require the MSVC-compatible C++ ABI on Win32.  Sorry, mingw users.
  28. //
  29. // Reaper extensions: see http://www.cockos.com/reaper/sdk/plugin/plugin.php and reaper_plugin.h.
  30. // The API functions in this header can be retrieved using reaper_plugin_info_t.GetFunc().
  31. //
  32. // VST plugins: see http://www.cockos.com/reaper/sdk/vst/vst_ext.php
  33. // The API functions in this header can be retrieved using audioMasterCallback.
  34. //
  35. // Because the API is dynamic, callers should never assume a function exists.
  36. // Check that a non-NULL function pointer was returned before using it (unless
  37. // loaded functions are verified using REAPERAPI_LoadAPI(), see note below).
  38.  
  39. // New (4.76+) usage of this file:
  40. //   1) most source files should just #include "reaper_plugin_functions.h" as is.
  41. //   2) one file should #define REAPERAPI_IMPLEMENT before including this file.
  42. //   3) the plug-in should call REAPERAPI_LoadAPI(rec->GetFunc) from REAPER_PLUGIN_ENTRYPOINT
  43. //      and check the return value for errors (REAPERAPI_LoadAPI will return 0 on success).
  44.  
  45. //   By default, all functions listed in this file are loaded. This means that an older version
  46. //   of REAPER may not succeed in loading, and also it may bloat your plug-in. If you wish to only load
  47. //   needed functions, #define REAPERAPI_MINIMAL and various #define REAPERAPI_WANT_<functionname> lines
  48. //   before including this file. You must put these definitions where REAPERAPI_IMPLEMENT is defined
  49. //   and you can optionally put them elsewhere (to detect needed REAPERAPI_WANT_xxx lines at compile-
  50. //   time rather than link-time).
  51. //  
  52. #if !defined(_LICE_H) && !defined(REAPERAPI_NO_LICE)
  53. typedef unsigned int LICE_pixel;
  54. typedef unsigned char LICE_pixel_chan;
  55. class LICE_IBitmap;
  56. class LICE_IFont;
  57. #endif
  58.  
  59. class WDL_VirtualWnd_BGCfg;
  60. class AudioAccessor;
  61.  
  62. // easiest to include reaper_plugin.h before reaper_plugin_functions.h in your application code.
  63. // if not, you may need to edit this path.
  64. #ifndef _REAPER_PLUGIN_H_
  65. #include "reaper_plugin.h"
  66. #endif
  67.  
  68. #ifdef REAPERAPI_DEF
  69. #undef REAPERAPI_DEF
  70. #endif
  71. #ifdef REAPERAPI_IMPLEMENT
  72.   #define REAPERAPI_DEF
  73. #else
  74.   #define REAPERAPI_DEF extern
  75. #endif
  76.  
  77.  
  78. #if defined(REAPERAPI_WANT___mergesort) || !defined(REAPERAPI_MINIMAL)
  79. REAPERAPI_DEF //==============================================
  80. // __mergesort
  81. // __mergesort is a stable sorting function with an API similar to qsort().
  82. // HOWEVER, it requires some temporary space, equal to the size of the data being sorted, so you can pass it as the last parameter,
  83. // or NULL and it will allocate and free space internally.
  84.  
  85.   void (*__mergesort)(void* base, size_t nmemb, size_t size, int (*cmpfunc)(const void*,const void*), void* tmpspace);
  86. #endif
  87.  
  88. #if defined(REAPERAPI_WANT_AddCustomizableMenu) || !defined(REAPERAPI_MINIMAL)
  89. REAPERAPI_DEF //==============================================
  90. // AddCustomizableMenu
  91. // menuidstr is some unique identifying string
  92. // menuname is for main menus only (displayed in a menu bar somewhere), NULL otherwise
  93. // kbdsecname is the name of the KbdSectionInfo registered by this plugin, or NULL for the main actions section
  94.  
  95.   bool (*AddCustomizableMenu)(const char* menuidstr, const char* menuname, const char* kbdsecname, bool addtomainmenu);
  96. #endif
  97.  
  98. #if defined(REAPERAPI_WANT_AddExtensionsMainMenu) || !defined(REAPERAPI_MINIMAL)
  99. REAPERAPI_DEF //==============================================
  100. // AddExtensionsMainMenu
  101. // Add an Extensions main menu, which the extension can populate/modify with plugin_register("hookcustommenu")
  102.  
  103.   bool (*AddExtensionsMainMenu)();
  104. #endif
  105.  
  106. #if defined(REAPERAPI_WANT_AddMediaItemToTrack) || !defined(REAPERAPI_MINIMAL)
  107. REAPERAPI_DEF //==============================================
  108. // AddMediaItemToTrack
  109. // creates a new media item.
  110.  
  111.   MediaItem* (*AddMediaItemToTrack)(MediaTrack* tr);
  112. #endif
  113.  
  114. #if defined(REAPERAPI_WANT_AddProjectMarker) || !defined(REAPERAPI_MINIMAL)
  115. REAPERAPI_DEF //==============================================
  116. // AddProjectMarker
  117. // Returns the index of the created marker/region, or -1 on failure. Supply wantidx>=0 if you want a particular index number, but you'll get a different index number a region and wantidx is already in use.
  118.  
  119.   int (*AddProjectMarker)(ReaProject* proj, bool isrgn, double pos, double rgnend, const char* name, int wantidx);
  120. #endif
  121.  
  122. #if defined(REAPERAPI_WANT_AddProjectMarker2) || !defined(REAPERAPI_MINIMAL)
  123. REAPERAPI_DEF //==============================================
  124. // AddProjectMarker2
  125. // Returns the index of the created marker/region, or -1 on failure. Supply wantidx>=0 if you want a particular index number, but you'll get a different index number a region and wantidx is already in use. color should be 0 (default color), or ColorToNative(r,g,b)|0x1000000
  126.  
  127.   int (*AddProjectMarker2)(ReaProject* proj, bool isrgn, double pos, double rgnend, const char* name, int wantidx, int color);
  128. #endif
  129.  
  130. #if defined(REAPERAPI_WANT_AddTakeToMediaItem) || !defined(REAPERAPI_MINIMAL)
  131. REAPERAPI_DEF //==============================================
  132. // AddTakeToMediaItem
  133. // creates a new take in an item
  134.  
  135.   MediaItem_Take* (*AddTakeToMediaItem)(MediaItem* item);
  136. #endif
  137.  
  138. #if defined(REAPERAPI_WANT_AddTempoTimeSigMarker) || !defined(REAPERAPI_MINIMAL)
  139. REAPERAPI_DEF //==============================================
  140. // AddTempoTimeSigMarker
  141. // Deprecated. Use SetTempoTimeSigMarker with ptidx=-1.
  142.  
  143.   bool (*AddTempoTimeSigMarker)(ReaProject* proj, double timepos, double bpm, int timesig_num, int timesig_denom, bool lineartempochange);
  144. #endif
  145.  
  146. #if defined(REAPERAPI_WANT_adjustZoom) || !defined(REAPERAPI_MINIMAL)
  147. REAPERAPI_DEF //==============================================
  148. // adjustZoom
  149. // forceset=0,doupd=true,centermode=-1 for default
  150.  
  151.   void (*adjustZoom)(double amt, int forceset, bool doupd, int centermode);
  152. #endif
  153.  
  154. #if defined(REAPERAPI_WANT_AnyTrackSolo) || !defined(REAPERAPI_MINIMAL)
  155. REAPERAPI_DEF //==============================================
  156. // AnyTrackSolo
  157.  
  158.   bool (*AnyTrackSolo)(ReaProject* proj);
  159. #endif
  160.  
  161. #if defined(REAPERAPI_WANT_APITest) || !defined(REAPERAPI_MINIMAL)
  162. REAPERAPI_DEF //==============================================
  163. // APITest
  164.  
  165.   void (*APITest)();
  166. #endif
  167.  
  168. #if defined(REAPERAPI_WANT_ApplyNudge) || !defined(REAPERAPI_MINIMAL)
  169. REAPERAPI_DEF //==============================================
  170. // ApplyNudge
  171. // nudgeflag: &1=set to value (otherwise nudge by value), &2=snap
  172. // nudgewhat: 0=position, 1=left trim, 2=left edge, 3=right edge, 4=contents, 5=duplicate, 6=edit cursor
  173. // nudgeunit: 0=ms, 1=seconds, 2=grid, 3=256th notes, ..., 15=whole notes, 16=measures.beats (1.15 = 1 measure + 1.5 beats), 17=samples, 18=frames, 19=pixels, 20=item lengths, 21=item selections
  174. // value: amount to nudge by, or value to set to
  175. // reverse: in nudge mode, nudges left (otherwise ignored)
  176. // copies: in nudge duplicate mode, number of copies (otherwise ignored)
  177.  
  178.   bool (*ApplyNudge)(ReaProject* project, int nudgeflag, int nudgewhat, int nudgeunits, double value, bool reverse, int copies);
  179. #endif
  180.  
  181. #if defined(REAPERAPI_WANT_Audio_IsPreBuffer) || !defined(REAPERAPI_MINIMAL)
  182. REAPERAPI_DEF //==============================================
  183. // Audio_IsPreBuffer
  184. // is in pre-buffer? threadsafe
  185.  
  186.   int (*Audio_IsPreBuffer)();
  187. #endif
  188.  
  189. #if defined(REAPERAPI_WANT_Audio_IsRunning) || !defined(REAPERAPI_MINIMAL)
  190. REAPERAPI_DEF //==============================================
  191. // Audio_IsRunning
  192. // is audio running at all? threadsafe
  193.  
  194.   int (*Audio_IsRunning)();
  195. #endif
  196.  
  197. #if defined(REAPERAPI_WANT_Audio_RegHardwareHook) || !defined(REAPERAPI_MINIMAL)
  198. REAPERAPI_DEF //==============================================
  199. // Audio_RegHardwareHook
  200. // return >0 on success
  201.  
  202.   int (*Audio_RegHardwareHook)(bool isAdd, audio_hook_register_t* reg);
  203. #endif
  204.  
  205. #if defined(REAPERAPI_WANT_AudioAccessorValidateState) || !defined(REAPERAPI_MINIMAL)
  206. REAPERAPI_DEF //==============================================
  207. // AudioAccessorValidateState
  208. // Validates the current state of the audio accessor -- must ONLY call this from the main thread. Returns true if the state changed.
  209.  
  210.   bool (*AudioAccessorValidateState)(AudioAccessor* accessor);
  211. #endif
  212.  
  213. #if defined(REAPERAPI_WANT_BypassFxAllTracks) || !defined(REAPERAPI_MINIMAL)
  214. REAPERAPI_DEF //==============================================
  215. // BypassFxAllTracks
  216. // -1 = bypass all if not all bypassed,otherwise unbypass all
  217.  
  218.   void (*BypassFxAllTracks)(int bypass);
  219. #endif
  220.  
  221. #if defined(REAPERAPI_WANT_CalculatePeaks) || !defined(REAPERAPI_MINIMAL)
  222. REAPERAPI_DEF //==============================================
  223. // CalculatePeaks
  224.  
  225.   int (*CalculatePeaks)(PCM_source_transfer_t* srcBlock, PCM_source_peaktransfer_t* pksBlock);
  226. #endif
  227.  
  228. #if defined(REAPERAPI_WANT_CalculatePeaksFloatSrcPtr) || !defined(REAPERAPI_MINIMAL)
  229. REAPERAPI_DEF //==============================================
  230. // CalculatePeaksFloatSrcPtr
  231. // NOTE: source samples field is a pointer to floats instead
  232.  
  233.   int (*CalculatePeaksFloatSrcPtr)(PCM_source_transfer_t* srcBlock, PCM_source_peaktransfer_t* pksBlock);
  234. #endif
  235.  
  236. #if defined(REAPERAPI_WANT_ClearAllRecArmed) || !defined(REAPERAPI_MINIMAL)
  237. REAPERAPI_DEF //==============================================
  238. // ClearAllRecArmed
  239.  
  240.   void (*ClearAllRecArmed)();
  241. #endif
  242.  
  243. #if defined(REAPERAPI_WANT_ClearConsole) || !defined(REAPERAPI_MINIMAL)
  244. REAPERAPI_DEF //==============================================
  245. // ClearConsole
  246. // Clear the ReaScript console. See ShowConsoleMsg
  247.  
  248.   void (*ClearConsole)();
  249. #endif
  250.  
  251. #if defined(REAPERAPI_WANT_ClearPeakCache) || !defined(REAPERAPI_MINIMAL)
  252. REAPERAPI_DEF //==============================================
  253. // ClearPeakCache
  254. // resets the global peak caches
  255.  
  256.   void (*ClearPeakCache)();
  257. #endif
  258.  
  259. #if defined(REAPERAPI_WANT_ColorFromNative) || !defined(REAPERAPI_MINIMAL)
  260. REAPERAPI_DEF //==============================================
  261. // ColorFromNative
  262. // Extract RGB values from an OS dependent color. See ColorToNative.
  263.  
  264.   void (*ColorFromNative)(int col, int* rOut, int* gOut, int* bOut);
  265. #endif
  266.  
  267. #if defined(REAPERAPI_WANT_ColorToNative) || !defined(REAPERAPI_MINIMAL)
  268. REAPERAPI_DEF //==============================================
  269. // ColorToNative
  270. // Make an OS dependent color from RGB values (e.g. RGB() macro on Windows). r,g and b are in [0..255]. See ColorFromNative.
  271.  
  272.   int (*ColorToNative)(int r, int g, int b);
  273. #endif
  274.  
  275. #if defined(REAPERAPI_WANT_CountActionShortcuts) || !defined(REAPERAPI_MINIMAL)
  276. REAPERAPI_DEF //==============================================
  277. // CountActionShortcuts
  278. // Returns the number of shortcuts that exist for the given command ID.
  279. // see GetActionShortcutDesc, DeleteActionShortcut, DoActionShortcutDialog.
  280.  
  281.   int (*CountActionShortcuts)(KbdSectionInfo* section, int cmdID);
  282. #endif
  283.  
  284. #if defined(REAPERAPI_WANT_CountEnvelopePoints) || !defined(REAPERAPI_MINIMAL)
  285. REAPERAPI_DEF //==============================================
  286. // CountEnvelopePoints
  287. // Returns the number of points in the envelope.
  288.  
  289.   int (*CountEnvelopePoints)(TrackEnvelope* envelope);
  290. #endif
  291.  
  292. #if defined(REAPERAPI_WANT_CountMediaItems) || !defined(REAPERAPI_MINIMAL)
  293. REAPERAPI_DEF //==============================================
  294. // CountMediaItems
  295. // count the number of items in the project (proj=0 for active project)
  296.  
  297.   int (*CountMediaItems)(ReaProject* proj);
  298. #endif
  299.  
  300. #if defined(REAPERAPI_WANT_CountProjectMarkers) || !defined(REAPERAPI_MINIMAL)
  301. REAPERAPI_DEF //==============================================
  302. // CountProjectMarkers
  303. // num_markersOut and num_regionsOut may be NULL.
  304.  
  305.   int (*CountProjectMarkers)(ReaProject* proj, int* num_markersOut, int* num_regionsOut);
  306. #endif
  307.  
  308. #if defined(REAPERAPI_WANT_CountSelectedMediaItems) || !defined(REAPERAPI_MINIMAL)
  309. REAPERAPI_DEF //==============================================
  310. // CountSelectedMediaItems
  311. // count the number of selected items in the project (proj=0 for active project)
  312.  
  313.   int (*CountSelectedMediaItems)(ReaProject* proj);
  314. #endif
  315.  
  316. #if defined(REAPERAPI_WANT_CountSelectedTracks) || !defined(REAPERAPI_MINIMAL)
  317. REAPERAPI_DEF //==============================================
  318. // CountSelectedTracks
  319. // count the number of selected tracks in the project (proj=0 for active project)
  320.  
  321.   int (*CountSelectedTracks)(ReaProject* proj);
  322. #endif
  323.  
  324. #if defined(REAPERAPI_WANT_CountTakeEnvelopes) || !defined(REAPERAPI_MINIMAL)
  325. REAPERAPI_DEF //==============================================
  326. // CountTakeEnvelopes
  327. // See GetTakeEnvelope
  328.  
  329.   int (*CountTakeEnvelopes)(MediaItem_Take* take);
  330. #endif
  331.  
  332. #if defined(REAPERAPI_WANT_CountTakes) || !defined(REAPERAPI_MINIMAL)
  333. REAPERAPI_DEF //==============================================
  334. // CountTakes
  335. // count the number of takes in the item
  336.  
  337.   int (*CountTakes)(MediaItem* item);
  338. #endif
  339.  
  340. #if defined(REAPERAPI_WANT_CountTCPFXParms) || !defined(REAPERAPI_MINIMAL)
  341. REAPERAPI_DEF //==============================================
  342. // CountTCPFXParms
  343. // Count the number of FX parameter knobs displayed on the track control panel.
  344.  
  345.   int (*CountTCPFXParms)(ReaProject* project, MediaTrack* track);
  346. #endif
  347.  
  348. #if defined(REAPERAPI_WANT_CountTempoTimeSigMarkers) || !defined(REAPERAPI_MINIMAL)
  349. REAPERAPI_DEF //==============================================
  350. // CountTempoTimeSigMarkers
  351. // Count the number of tempo/time signature markers in the project. See GetTempoTimeSigMarker, SetTempoTimeSigMarker, AddTempoTimeSigMarker.
  352.  
  353.   int (*CountTempoTimeSigMarkers)(ReaProject* proj);
  354. #endif
  355.  
  356. #if defined(REAPERAPI_WANT_CountTrackEnvelopes) || !defined(REAPERAPI_MINIMAL)
  357. REAPERAPI_DEF //==============================================
  358. // CountTrackEnvelopes
  359. // see GetTrackEnvelope
  360.  
  361.   int (*CountTrackEnvelopes)(MediaTrack* track);
  362. #endif
  363.  
  364. #if defined(REAPERAPI_WANT_CountTrackMediaItems) || !defined(REAPERAPI_MINIMAL)
  365. REAPERAPI_DEF //==============================================
  366. // CountTrackMediaItems
  367. // count the number of items in the track
  368.  
  369.   int (*CountTrackMediaItems)(MediaTrack* track);
  370. #endif
  371.  
  372. #if defined(REAPERAPI_WANT_CountTracks) || !defined(REAPERAPI_MINIMAL)
  373. REAPERAPI_DEF //==============================================
  374. // CountTracks
  375. // count the number of tracks in the project (proj=0 for active project)
  376.  
  377.   int (*CountTracks)(ReaProject* proj);
  378. #endif
  379.  
  380. #if defined(REAPERAPI_WANT_CreateLocalOscHandler) || !defined(REAPERAPI_MINIMAL)
  381. REAPERAPI_DEF //==============================================
  382. // CreateLocalOscHandler
  383. // callback is a function pointer: void (*callback)(void* obj, const char* msg, int msglen), which handles OSC messages sent from REAPER. The function return is a local osc handler. See SendLocalOscMessage, DestroyOscHandler.
  384.  
  385.   void* (*CreateLocalOscHandler)(void* obj, void* callback);
  386. #endif
  387.  
  388. #if defined(REAPERAPI_WANT_CreateMIDIInput) || !defined(REAPERAPI_MINIMAL)
  389. REAPERAPI_DEF //==============================================
  390. // CreateMIDIInput
  391.  
  392.   midi_Input* (*CreateMIDIInput)(int dev);
  393. #endif
  394.  
  395. #if defined(REAPERAPI_WANT_CreateMIDIOutput) || !defined(REAPERAPI_MINIMAL)
  396. REAPERAPI_DEF //==============================================
  397. // CreateMIDIOutput
  398.  
  399.   midi_Output* (*CreateMIDIOutput)(int dev, bool streamMode, int* msoffset100);
  400. #endif
  401.  
  402. #if defined(REAPERAPI_WANT_CreateNewMIDIItemInProj) || !defined(REAPERAPI_MINIMAL)
  403. REAPERAPI_DEF //==============================================
  404. // CreateNewMIDIItemInProj
  405. // Create a new MIDI media item, containing no MIDI events. Time is in seconds unless qn is set.
  406.  
  407.   MediaItem* (*CreateNewMIDIItemInProj)(MediaTrack* track, double starttime, double endtime, const bool* qnInOptional);
  408. #endif
  409.  
  410. #if defined(REAPERAPI_WANT_CreateTakeAudioAccessor) || !defined(REAPERAPI_MINIMAL)
  411. REAPERAPI_DEF //==============================================
  412. // CreateTakeAudioAccessor
  413. // Create an audio accessor object for this take. Must only call from the main thread. See CreateTrackAudioAccessor, DestroyAudioAccessor, GetAudioAccessorHash, GetAudioAccessorStartTime, GetAudioAccessorEndTime, GetAudioAccessorSamples.
  414.  
  415.   AudioAccessor* (*CreateTakeAudioAccessor)(MediaItem_Take* take);
  416. #endif
  417.  
  418. #if defined(REAPERAPI_WANT_CreateTrackAudioAccessor) || !defined(REAPERAPI_MINIMAL)
  419. REAPERAPI_DEF //==============================================
  420. // CreateTrackAudioAccessor
  421. // Create an audio accessor object for this track. Must only call from the main thread. See CreateTakeAudioAccessor, DestroyAudioAccessor, GetAudioAccessorHash, GetAudioAccessorStartTime, GetAudioAccessorEndTime, GetAudioAccessorSamples.
  422.  
  423.   AudioAccessor* (*CreateTrackAudioAccessor)(MediaTrack* track);
  424. #endif
  425.  
  426. #if defined(REAPERAPI_WANT_CSurf_FlushUndo) || !defined(REAPERAPI_MINIMAL)
  427. REAPERAPI_DEF //==============================================
  428. // CSurf_FlushUndo
  429. // call this to force flushing of the undo states after using CSurf_On*Change()
  430.  
  431.   void (*CSurf_FlushUndo)(bool force);
  432. #endif
  433.  
  434. #if defined(REAPERAPI_WANT_CSurf_GetTouchState) || !defined(REAPERAPI_MINIMAL)
  435. REAPERAPI_DEF //==============================================
  436. // CSurf_GetTouchState
  437.  
  438.   bool (*CSurf_GetTouchState)(MediaTrack* trackid, int isPan);
  439. #endif
  440.  
  441. #if defined(REAPERAPI_WANT_CSurf_GoEnd) || !defined(REAPERAPI_MINIMAL)
  442. REAPERAPI_DEF //==============================================
  443. // CSurf_GoEnd
  444.  
  445.   void (*CSurf_GoEnd)();
  446. #endif
  447.  
  448. #if defined(REAPERAPI_WANT_CSurf_GoStart) || !defined(REAPERAPI_MINIMAL)
  449. REAPERAPI_DEF //==============================================
  450. // CSurf_GoStart
  451.  
  452.   void (*CSurf_GoStart)();
  453. #endif
  454.  
  455. #if defined(REAPERAPI_WANT_CSurf_NumTracks) || !defined(REAPERAPI_MINIMAL)
  456. REAPERAPI_DEF //==============================================
  457. // CSurf_NumTracks
  458.  
  459.   int (*CSurf_NumTracks)(bool mcpView);
  460. #endif
  461.  
  462. #if defined(REAPERAPI_WANT_CSurf_OnArrow) || !defined(REAPERAPI_MINIMAL)
  463. REAPERAPI_DEF //==============================================
  464. // CSurf_OnArrow
  465.  
  466.   void (*CSurf_OnArrow)(int whichdir, bool wantzoom);
  467. #endif
  468.  
  469. #if defined(REAPERAPI_WANT_CSurf_OnFwd) || !defined(REAPERAPI_MINIMAL)
  470. REAPERAPI_DEF //==============================================
  471. // CSurf_OnFwd
  472.  
  473.   void (*CSurf_OnFwd)(int seekplay);
  474. #endif
  475.  
  476. #if defined(REAPERAPI_WANT_CSurf_OnFXChange) || !defined(REAPERAPI_MINIMAL)
  477. REAPERAPI_DEF //==============================================
  478. // CSurf_OnFXChange
  479.  
  480.   bool (*CSurf_OnFXChange)(MediaTrack* trackid, int en);
  481. #endif
  482.  
  483. #if defined(REAPERAPI_WANT_CSurf_OnInputMonitorChange) || !defined(REAPERAPI_MINIMAL)
  484. REAPERAPI_DEF //==============================================
  485. // CSurf_OnInputMonitorChange
  486.  
  487.   int (*CSurf_OnInputMonitorChange)(MediaTrack* trackid, int monitor);
  488. #endif
  489.  
  490. #if defined(REAPERAPI_WANT_CSurf_OnInputMonitorChangeEx) || !defined(REAPERAPI_MINIMAL)
  491. REAPERAPI_DEF //==============================================
  492. // CSurf_OnInputMonitorChangeEx
  493.  
  494.   int (*CSurf_OnInputMonitorChangeEx)(MediaTrack* trackid, int monitor, bool allowgang);
  495. #endif
  496.  
  497. #if defined(REAPERAPI_WANT_CSurf_OnMuteChange) || !defined(REAPERAPI_MINIMAL)
  498. REAPERAPI_DEF //==============================================
  499. // CSurf_OnMuteChange
  500.  
  501.   bool (*CSurf_OnMuteChange)(MediaTrack* trackid, int mute);
  502. #endif
  503.  
  504. #if defined(REAPERAPI_WANT_CSurf_OnMuteChangeEx) || !defined(REAPERAPI_MINIMAL)
  505. REAPERAPI_DEF //==============================================
  506. // CSurf_OnMuteChangeEx
  507.  
  508.   bool (*CSurf_OnMuteChangeEx)(MediaTrack* trackid, int mute, bool allowgang);
  509. #endif
  510.  
  511. #if defined(REAPERAPI_WANT_CSurf_OnOscControlMessage) || !defined(REAPERAPI_MINIMAL)
  512. REAPERAPI_DEF //==============================================
  513. // CSurf_OnOscControlMessage
  514.  
  515.   void (*CSurf_OnOscControlMessage)(const char* msg, const float* arg);
  516. #endif
  517.  
  518. #if defined(REAPERAPI_WANT_CSurf_OnPanChange) || !defined(REAPERAPI_MINIMAL)
  519. REAPERAPI_DEF //==============================================
  520. // CSurf_OnPanChange
  521.  
  522.   double (*CSurf_OnPanChange)(MediaTrack* trackid, double pan, bool relative);
  523. #endif
  524.  
  525. #if defined(REAPERAPI_WANT_CSurf_OnPanChangeEx) || !defined(REAPERAPI_MINIMAL)
  526. REAPERAPI_DEF //==============================================
  527. // CSurf_OnPanChangeEx
  528.  
  529.   double (*CSurf_OnPanChangeEx)(MediaTrack* trackid, double pan, bool relative, bool allowGang);
  530. #endif
  531.  
  532. #if defined(REAPERAPI_WANT_CSurf_OnPause) || !defined(REAPERAPI_MINIMAL)
  533. REAPERAPI_DEF //==============================================
  534. // CSurf_OnPause
  535.  
  536.   void (*CSurf_OnPause)();
  537. #endif
  538.  
  539. #if defined(REAPERAPI_WANT_CSurf_OnPlay) || !defined(REAPERAPI_MINIMAL)
  540. REAPERAPI_DEF //==============================================
  541. // CSurf_OnPlay
  542.  
  543.   void (*CSurf_OnPlay)();
  544. #endif
  545.  
  546. #if defined(REAPERAPI_WANT_CSurf_OnPlayRateChange) || !defined(REAPERAPI_MINIMAL)
  547. REAPERAPI_DEF //==============================================
  548. // CSurf_OnPlayRateChange
  549.  
  550.   void (*CSurf_OnPlayRateChange)(double playrate);
  551. #endif
  552.  
  553. #if defined(REAPERAPI_WANT_CSurf_OnRecArmChange) || !defined(REAPERAPI_MINIMAL)
  554. REAPERAPI_DEF //==============================================
  555. // CSurf_OnRecArmChange
  556.  
  557.   bool (*CSurf_OnRecArmChange)(MediaTrack* trackid, int recarm);
  558. #endif
  559.  
  560. #if defined(REAPERAPI_WANT_CSurf_OnRecArmChangeEx) || !defined(REAPERAPI_MINIMAL)
  561. REAPERAPI_DEF //==============================================
  562. // CSurf_OnRecArmChangeEx
  563.  
  564.   bool (*CSurf_OnRecArmChangeEx)(MediaTrack* trackid, int recarm, bool allowgang);
  565. #endif
  566.  
  567. #if defined(REAPERAPI_WANT_CSurf_OnRecord) || !defined(REAPERAPI_MINIMAL)
  568. REAPERAPI_DEF //==============================================
  569. // CSurf_OnRecord
  570.  
  571.   void (*CSurf_OnRecord)();
  572. #endif
  573.  
  574. #if defined(REAPERAPI_WANT_CSurf_OnRecvPanChange) || !defined(REAPERAPI_MINIMAL)
  575. REAPERAPI_DEF //==============================================
  576. // CSurf_OnRecvPanChange
  577.  
  578.   double (*CSurf_OnRecvPanChange)(MediaTrack* trackid, int recv_index, double pan, bool relative);
  579. #endif
  580.  
  581. #if defined(REAPERAPI_WANT_CSurf_OnRecvVolumeChange) || !defined(REAPERAPI_MINIMAL)
  582. REAPERAPI_DEF //==============================================
  583. // CSurf_OnRecvVolumeChange
  584.  
  585.   double (*CSurf_OnRecvVolumeChange)(MediaTrack* trackid, int recv_index, double volume, bool relative);
  586. #endif
  587.  
  588. #if defined(REAPERAPI_WANT_CSurf_OnRew) || !defined(REAPERAPI_MINIMAL)
  589. REAPERAPI_DEF //==============================================
  590. // CSurf_OnRew
  591.  
  592.   void (*CSurf_OnRew)(int seekplay);
  593. #endif
  594.  
  595. #if defined(REAPERAPI_WANT_CSurf_OnRewFwd) || !defined(REAPERAPI_MINIMAL)
  596. REAPERAPI_DEF //==============================================
  597. // CSurf_OnRewFwd
  598.  
  599.   void (*CSurf_OnRewFwd)(int seekplay, int dir);
  600. #endif
  601.  
  602. #if defined(REAPERAPI_WANT_CSurf_OnScroll) || !defined(REAPERAPI_MINIMAL)
  603. REAPERAPI_DEF //==============================================
  604. // CSurf_OnScroll
  605.  
  606.   void (*CSurf_OnScroll)(int xdir, int ydir);
  607. #endif
  608.  
  609. #if defined(REAPERAPI_WANT_CSurf_OnSelectedChange) || !defined(REAPERAPI_MINIMAL)
  610. REAPERAPI_DEF //==============================================
  611. // CSurf_OnSelectedChange
  612.  
  613.   bool (*CSurf_OnSelectedChange)(MediaTrack* trackid, int selected);
  614. #endif
  615.  
  616. #if defined(REAPERAPI_WANT_CSurf_OnSendPanChange) || !defined(REAPERAPI_MINIMAL)
  617. REAPERAPI_DEF //==============================================
  618. // CSurf_OnSendPanChange
  619.  
  620.   double (*CSurf_OnSendPanChange)(MediaTrack* trackid, int send_index, double pan, bool relative);
  621. #endif
  622.  
  623. #if defined(REAPERAPI_WANT_CSurf_OnSendVolumeChange) || !defined(REAPERAPI_MINIMAL)
  624. REAPERAPI_DEF //==============================================
  625. // CSurf_OnSendVolumeChange
  626.  
  627.   double (*CSurf_OnSendVolumeChange)(MediaTrack* trackid, int send_index, double volume, bool relative);
  628. #endif
  629.  
  630. #if defined(REAPERAPI_WANT_CSurf_OnSoloChange) || !defined(REAPERAPI_MINIMAL)
  631. REAPERAPI_DEF //==============================================
  632. // CSurf_OnSoloChange
  633.  
  634.   bool (*CSurf_OnSoloChange)(MediaTrack* trackid, int solo);
  635. #endif
  636.  
  637. #if defined(REAPERAPI_WANT_CSurf_OnSoloChangeEx) || !defined(REAPERAPI_MINIMAL)
  638. REAPERAPI_DEF //==============================================
  639. // CSurf_OnSoloChangeEx
  640.  
  641.   bool (*CSurf_OnSoloChangeEx)(MediaTrack* trackid, int solo, bool allowgang);
  642. #endif
  643.  
  644. #if defined(REAPERAPI_WANT_CSurf_OnStop) || !defined(REAPERAPI_MINIMAL)
  645. REAPERAPI_DEF //==============================================
  646. // CSurf_OnStop
  647.  
  648.   void (*CSurf_OnStop)();
  649. #endif
  650.  
  651. #if defined(REAPERAPI_WANT_CSurf_OnTempoChange) || !defined(REAPERAPI_MINIMAL)
  652. REAPERAPI_DEF //==============================================
  653. // CSurf_OnTempoChange
  654.  
  655.   void (*CSurf_OnTempoChange)(double bpm);
  656. #endif
  657.  
  658. #if defined(REAPERAPI_WANT_CSurf_OnTrackSelection) || !defined(REAPERAPI_MINIMAL)
  659. REAPERAPI_DEF //==============================================
  660. // CSurf_OnTrackSelection
  661.  
  662.   void (*CSurf_OnTrackSelection)(MediaTrack* trackid);
  663. #endif
  664.  
  665. #if defined(REAPERAPI_WANT_CSurf_OnVolumeChange) || !defined(REAPERAPI_MINIMAL)
  666. REAPERAPI_DEF //==============================================
  667. // CSurf_OnVolumeChange
  668.  
  669.   double (*CSurf_OnVolumeChange)(MediaTrack* trackid, double volume, bool relative);
  670. #endif
  671.  
  672. #if defined(REAPERAPI_WANT_CSurf_OnVolumeChangeEx) || !defined(REAPERAPI_MINIMAL)
  673. REAPERAPI_DEF //==============================================
  674. // CSurf_OnVolumeChangeEx
  675.  
  676.   double (*CSurf_OnVolumeChangeEx)(MediaTrack* trackid, double volume, bool relative, bool allowGang);
  677. #endif
  678.  
  679. #if defined(REAPERAPI_WANT_CSurf_OnWidthChange) || !defined(REAPERAPI_MINIMAL)
  680. REAPERAPI_DEF //==============================================
  681. // CSurf_OnWidthChange
  682.  
  683.   double (*CSurf_OnWidthChange)(MediaTrack* trackid, double width, bool relative);
  684. #endif
  685.  
  686. #if defined(REAPERAPI_WANT_CSurf_OnWidthChangeEx) || !defined(REAPERAPI_MINIMAL)
  687. REAPERAPI_DEF //==============================================
  688. // CSurf_OnWidthChangeEx
  689.  
  690.   double (*CSurf_OnWidthChangeEx)(MediaTrack* trackid, double width, bool relative, bool allowGang);
  691. #endif
  692.  
  693. #if defined(REAPERAPI_WANT_CSurf_OnZoom) || !defined(REAPERAPI_MINIMAL)
  694. REAPERAPI_DEF //==============================================
  695. // CSurf_OnZoom
  696.  
  697.   void (*CSurf_OnZoom)(int xdir, int ydir);
  698. #endif
  699.  
  700. #if defined(REAPERAPI_WANT_CSurf_ResetAllCachedVolPanStates) || !defined(REAPERAPI_MINIMAL)
  701. REAPERAPI_DEF //==============================================
  702. // CSurf_ResetAllCachedVolPanStates
  703.  
  704.   void (*CSurf_ResetAllCachedVolPanStates)();
  705. #endif
  706.  
  707. #if defined(REAPERAPI_WANT_CSurf_ScrubAmt) || !defined(REAPERAPI_MINIMAL)
  708. REAPERAPI_DEF //==============================================
  709. // CSurf_ScrubAmt
  710.  
  711.   void (*CSurf_ScrubAmt)(double amt);
  712. #endif
  713.  
  714. #if defined(REAPERAPI_WANT_CSurf_SetAutoMode) || !defined(REAPERAPI_MINIMAL)
  715. REAPERAPI_DEF //==============================================
  716. // CSurf_SetAutoMode
  717.  
  718.   void (*CSurf_SetAutoMode)(int mode, IReaperControlSurface* ignoresurf);
  719. #endif
  720.  
  721. #if defined(REAPERAPI_WANT_CSurf_SetPlayState) || !defined(REAPERAPI_MINIMAL)
  722. REAPERAPI_DEF //==============================================
  723. // CSurf_SetPlayState
  724.  
  725.   void (*CSurf_SetPlayState)(bool play, bool pause, bool rec, IReaperControlSurface* ignoresurf);
  726. #endif
  727.  
  728. #if defined(REAPERAPI_WANT_CSurf_SetRepeatState) || !defined(REAPERAPI_MINIMAL)
  729. REAPERAPI_DEF //==============================================
  730. // CSurf_SetRepeatState
  731.  
  732.   void (*CSurf_SetRepeatState)(bool rep, IReaperControlSurface* ignoresurf);
  733. #endif
  734.  
  735. #if defined(REAPERAPI_WANT_CSurf_SetSurfaceMute) || !defined(REAPERAPI_MINIMAL)
  736. REAPERAPI_DEF //==============================================
  737. // CSurf_SetSurfaceMute
  738.  
  739.   void (*CSurf_SetSurfaceMute)(MediaTrack* trackid, bool mute, IReaperControlSurface* ignoresurf);
  740. #endif
  741.  
  742. #if defined(REAPERAPI_WANT_CSurf_SetSurfacePan) || !defined(REAPERAPI_MINIMAL)
  743. REAPERAPI_DEF //==============================================
  744. // CSurf_SetSurfacePan
  745.  
  746.   void (*CSurf_SetSurfacePan)(MediaTrack* trackid, double pan, IReaperControlSurface* ignoresurf);
  747. #endif
  748.  
  749. #if defined(REAPERAPI_WANT_CSurf_SetSurfaceRecArm) || !defined(REAPERAPI_MINIMAL)
  750. REAPERAPI_DEF //==============================================
  751. // CSurf_SetSurfaceRecArm
  752.  
  753.   void (*CSurf_SetSurfaceRecArm)(MediaTrack* trackid, bool recarm, IReaperControlSurface* ignoresurf);
  754. #endif
  755.  
  756. #if defined(REAPERAPI_WANT_CSurf_SetSurfaceSelected) || !defined(REAPERAPI_MINIMAL)
  757. REAPERAPI_DEF //==============================================
  758. // CSurf_SetSurfaceSelected
  759.  
  760.   void (*CSurf_SetSurfaceSelected)(MediaTrack* trackid, bool selected, IReaperControlSurface* ignoresurf);
  761. #endif
  762.  
  763. #if defined(REAPERAPI_WANT_CSurf_SetSurfaceSolo) || !defined(REAPERAPI_MINIMAL)
  764. REAPERAPI_DEF //==============================================
  765. // CSurf_SetSurfaceSolo
  766.  
  767.   void (*CSurf_SetSurfaceSolo)(MediaTrack* trackid, bool solo, IReaperControlSurface* ignoresurf);
  768. #endif
  769.  
  770. #if defined(REAPERAPI_WANT_CSurf_SetSurfaceVolume) || !defined(REAPERAPI_MINIMAL)
  771. REAPERAPI_DEF //==============================================
  772. // CSurf_SetSurfaceVolume
  773.  
  774.   void (*CSurf_SetSurfaceVolume)(MediaTrack* trackid, double volume, IReaperControlSurface* ignoresurf);
  775. #endif
  776.  
  777. #if defined(REAPERAPI_WANT_CSurf_SetTrackListChange) || !defined(REAPERAPI_MINIMAL)
  778. REAPERAPI_DEF //==============================================
  779. // CSurf_SetTrackListChange
  780.  
  781.   void (*CSurf_SetTrackListChange)();
  782. #endif
  783.  
  784. #if defined(REAPERAPI_WANT_CSurf_TrackFromID) || !defined(REAPERAPI_MINIMAL)
  785. REAPERAPI_DEF //==============================================
  786. // CSurf_TrackFromID
  787.  
  788.   MediaTrack* (*CSurf_TrackFromID)(int idx, bool mcpView);
  789. #endif
  790.  
  791. #if defined(REAPERAPI_WANT_CSurf_TrackToID) || !defined(REAPERAPI_MINIMAL)
  792. REAPERAPI_DEF //==============================================
  793. // CSurf_TrackToID
  794.  
  795.   int (*CSurf_TrackToID)(MediaTrack* track, bool mcpView);
  796. #endif
  797.  
  798. #if defined(REAPERAPI_WANT_DB2SLIDER) || !defined(REAPERAPI_MINIMAL)
  799. REAPERAPI_DEF //==============================================
  800. // DB2SLIDER
  801.  
  802.   double (*DB2SLIDER)(double x);
  803. #endif
  804.  
  805. #if defined(REAPERAPI_WANT_DeleteActionShortcut) || !defined(REAPERAPI_MINIMAL)
  806. REAPERAPI_DEF //==============================================
  807. // DeleteActionShortcut
  808. // Delete the specific shortcut for the given command ID.
  809. // See CountActionShortcuts, GetActionShortcutDesc, DoActionShortcutDialog.
  810.  
  811.   bool (*DeleteActionShortcut)(KbdSectionInfo* section, int cmdID, int shortcutidx);
  812. #endif
  813.  
  814. #if defined(REAPERAPI_WANT_DeleteEnvelopePointRange) || !defined(REAPERAPI_MINIMAL)
  815. REAPERAPI_DEF //==============================================
  816. // DeleteEnvelopePointRange
  817. // Delete a range of envelope points.
  818.  
  819.   bool (*DeleteEnvelopePointRange)(TrackEnvelope* envelope, double time_start, double time_end);
  820. #endif
  821.  
  822. #if defined(REAPERAPI_WANT_DeleteExtState) || !defined(REAPERAPI_MINIMAL)
  823. REAPERAPI_DEF //==============================================
  824. // DeleteExtState
  825. // Delete the extended state value for a specific section and key. persist=true means the value should remain deleted the next time REAPER is opened. See SetExtState, GetExtState, HasExtState.
  826.  
  827.   void (*DeleteExtState)(const char* section, const char* key, bool persist);
  828. #endif
  829.  
  830. #if defined(REAPERAPI_WANT_DeleteProjectMarker) || !defined(REAPERAPI_MINIMAL)
  831. REAPERAPI_DEF //==============================================
  832. // DeleteProjectMarker
  833. // Delete a marker.  proj==NULL for the active project.
  834.  
  835.   bool (*DeleteProjectMarker)(ReaProject* proj, int markrgnindexnumber, bool isrgn);
  836. #endif
  837.  
  838. #if defined(REAPERAPI_WANT_DeleteProjectMarkerByIndex) || !defined(REAPERAPI_MINIMAL)
  839. REAPERAPI_DEF //==============================================
  840. // DeleteProjectMarkerByIndex
  841. // Differs from DeleteProjectMarker only in that markrgnidx is 0 for the first marker/region, 1 for the next, etc (see EnumProjectMarkers3), rather than representing the displayed marker/region ID number (see SetProjectMarker4).
  842.  
  843.   bool (*DeleteProjectMarkerByIndex)(ReaProject* proj, int markrgnidx);
  844. #endif
  845.  
  846. #if defined(REAPERAPI_WANT_DeleteTakeStretchMarkers) || !defined(REAPERAPI_MINIMAL)
  847. REAPERAPI_DEF //==============================================
  848. // DeleteTakeStretchMarkers
  849. // Deletes one or more stretch markers. Returns number of stretch markers deleted.
  850.  
  851.   int (*DeleteTakeStretchMarkers)(MediaItem_Take* take, int idx, const int* countInOptional);
  852. #endif
  853.  
  854. #if defined(REAPERAPI_WANT_DeleteTempoTimeSigMarker) || !defined(REAPERAPI_MINIMAL)
  855. REAPERAPI_DEF //==============================================
  856. // DeleteTempoTimeSigMarker
  857. // Delete a tempo/time signature marker.
  858.  
  859.   bool (*DeleteTempoTimeSigMarker)(ReaProject* project, int markerindex);
  860. #endif
  861.  
  862. #if defined(REAPERAPI_WANT_DeleteTrack) || !defined(REAPERAPI_MINIMAL)
  863. REAPERAPI_DEF //==============================================
  864. // DeleteTrack
  865. // deletes a track
  866.  
  867.   void (*DeleteTrack)(MediaTrack* tr);
  868. #endif
  869.  
  870. #if defined(REAPERAPI_WANT_DeleteTrackMediaItem) || !defined(REAPERAPI_MINIMAL)
  871. REAPERAPI_DEF //==============================================
  872. // DeleteTrackMediaItem
  873.  
  874.   bool (*DeleteTrackMediaItem)(MediaTrack* tr, MediaItem* it);
  875. #endif
  876.  
  877. #if defined(REAPERAPI_WANT_DestroyAudioAccessor) || !defined(REAPERAPI_MINIMAL)
  878. REAPERAPI_DEF //==============================================
  879. // DestroyAudioAccessor
  880. // Destroy an audio accessor. Must only call from the main thread. See CreateTakeAudioAccessor, CreateTrackAudioAccessor, GetAudioAccessorHash, GetAudioAccessorStartTime, GetAudioAccessorEndTime, GetAudioAccessorSamples.
  881.  
  882.   void (*DestroyAudioAccessor)(AudioAccessor* accessor);
  883. #endif
  884.  
  885. #if defined(REAPERAPI_WANT_DestroyLocalOscHandler) || !defined(REAPERAPI_MINIMAL)
  886. REAPERAPI_DEF //==============================================
  887. // DestroyLocalOscHandler
  888. // See CreateLocalOscHandler, SendLocalOscMessage.
  889.  
  890.   void (*DestroyLocalOscHandler)(void* local_osc_handler);
  891. #endif
  892.  
  893. #if defined(REAPERAPI_WANT_DoActionShortcutDialog) || !defined(REAPERAPI_MINIMAL)
  894. REAPERAPI_DEF //==============================================
  895. // DoActionShortcutDialog
  896. // Open the action shortcut dialog to edit or add a shortcut for the given command ID. If (shortcutidx >= 0 && shortcutidx < CountActionShortcuts()), that specific shortcut will be replaced, otherwise a new shortcut will be added.
  897. // See CountActionShortcuts, GetActionShortcutDesc, DeleteActionShortcut.
  898.  
  899.   bool (*DoActionShortcutDialog)(HWND hwnd, KbdSectionInfo* section, int cmdID, int shortcutidx);
  900. #endif
  901.  
  902. #if defined(REAPERAPI_WANT_Dock_UpdateDockID) || !defined(REAPERAPI_MINIMAL)
  903. REAPERAPI_DEF //==============================================
  904. // Dock_UpdateDockID
  905. // updates preference for docker window ident_str to be in dock whichDock on next open
  906.  
  907.   void (*Dock_UpdateDockID)(const char* ident_str, int whichDock);
  908. #endif
  909.  
  910. #if defined(REAPERAPI_WANT_DockIsChildOfDock) || !defined(REAPERAPI_MINIMAL)
  911. REAPERAPI_DEF //==============================================
  912. // DockIsChildOfDock
  913. // returns dock index that contains hwnd, or -1
  914.  
  915.   int (*DockIsChildOfDock)(HWND hwnd, bool* isFloatingDockerOut);
  916. #endif
  917.  
  918. #if defined(REAPERAPI_WANT_DockWindowActivate) || !defined(REAPERAPI_MINIMAL)
  919. REAPERAPI_DEF //==============================================
  920. // DockWindowActivate
  921.  
  922.   void (*DockWindowActivate)(HWND hwnd);
  923. #endif
  924.  
  925. #if defined(REAPERAPI_WANT_DockWindowAdd) || !defined(REAPERAPI_MINIMAL)
  926. REAPERAPI_DEF //==============================================
  927. // DockWindowAdd
  928.  
  929.   void (*DockWindowAdd)(HWND hwnd, const char* name, int pos, bool allowShow);
  930. #endif
  931.  
  932. #if defined(REAPERAPI_WANT_DockWindowAddEx) || !defined(REAPERAPI_MINIMAL)
  933. REAPERAPI_DEF //==============================================
  934. // DockWindowAddEx
  935.  
  936.   void (*DockWindowAddEx)(HWND hwnd, const char* name, const char* identstr, bool allowShow);
  937. #endif
  938.  
  939. #if defined(REAPERAPI_WANT_DockWindowRefresh) || !defined(REAPERAPI_MINIMAL)
  940. REAPERAPI_DEF //==============================================
  941. // DockWindowRefresh
  942.  
  943.   void (*DockWindowRefresh)();
  944. #endif
  945.  
  946. #if defined(REAPERAPI_WANT_DockWindowRefreshForHWND) || !defined(REAPERAPI_MINIMAL)
  947. REAPERAPI_DEF //==============================================
  948. // DockWindowRefreshForHWND
  949.  
  950.   void (*DockWindowRefreshForHWND)(HWND hwnd);
  951. #endif
  952.  
  953. #if defined(REAPERAPI_WANT_DockWindowRemove) || !defined(REAPERAPI_MINIMAL)
  954. REAPERAPI_DEF //==============================================
  955. // DockWindowRemove
  956.  
  957.   void (*DockWindowRemove)(HWND hwnd);
  958. #endif
  959.  
  960. #if defined(REAPERAPI_WANT_DuplicateCustomizableMenu) || !defined(REAPERAPI_MINIMAL)
  961. REAPERAPI_DEF //==============================================
  962. // DuplicateCustomizableMenu
  963. // Populate destmenu with all the entries and submenus found in srcmenu
  964.  
  965.   bool (*DuplicateCustomizableMenu)(void* srcmenu, void* destmenu);
  966. #endif
  967.  
  968. #if defined(REAPERAPI_WANT_EditTempoTimeSigMarker) || !defined(REAPERAPI_MINIMAL)
  969. REAPERAPI_DEF //==============================================
  970. // EditTempoTimeSigMarker
  971. // Open the tempo/time signature marker editor dialog.
  972.  
  973.   bool (*EditTempoTimeSigMarker)(ReaProject* project, int markerindex);
  974. #endif
  975.  
  976. #if defined(REAPERAPI_WANT_EnsureNotCompletelyOffscreen) || !defined(REAPERAPI_MINIMAL)
  977. REAPERAPI_DEF //==============================================
  978. // EnsureNotCompletelyOffscreen
  979. // call with a saved window rect for your window and it'll correct any positioning info.
  980.  
  981.   void (*EnsureNotCompletelyOffscreen)(RECT* rOut);
  982. #endif
  983.  
  984. #if defined(REAPERAPI_WANT_EnumerateFiles) || !defined(REAPERAPI_MINIMAL)
  985. REAPERAPI_DEF //==============================================
  986. // EnumerateFiles
  987. // List the files in the "path" directory. Returns NULL (or empty string, in Lua) when all files have been listed. See EnumerateSubdirectories
  988.  
  989.   const char* (*EnumerateFiles)(const char* path, int fileindex);
  990. #endif
  991.  
  992. #if defined(REAPERAPI_WANT_EnumerateSubdirectories) || !defined(REAPERAPI_MINIMAL)
  993. REAPERAPI_DEF //==============================================
  994. // EnumerateSubdirectories
  995. // List the subdirectories in the "path" directory. Returns NULL (or empty string, in Lua) when all subdirectories have been listed. See EnumerateFiles
  996.  
  997.   const char* (*EnumerateSubdirectories)(const char* path, int subdirindex);
  998. #endif
  999.  
  1000. #if defined(REAPERAPI_WANT_EnumPitchShiftModes) || !defined(REAPERAPI_MINIMAL)
  1001. REAPERAPI_DEF //==============================================
  1002. // EnumPitchShiftModes
  1003. // Start querying modes at 0, returns FALSE when no more modes possible, sets strOut to NULL if a mode is currently unsupported
  1004.  
  1005.   bool (*EnumPitchShiftModes)(int mode, const char** strOut);
  1006. #endif
  1007.  
  1008. #if defined(REAPERAPI_WANT_EnumPitchShiftSubModes) || !defined(REAPERAPI_MINIMAL)
  1009. REAPERAPI_DEF //==============================================
  1010. // EnumPitchShiftSubModes
  1011. // Returns submode name, or NULL
  1012.  
  1013.   const char* (*EnumPitchShiftSubModes)(int mode, int submode);
  1014. #endif
  1015.  
  1016. #if defined(REAPERAPI_WANT_EnumProjectMarkers) || !defined(REAPERAPI_MINIMAL)
  1017. REAPERAPI_DEF //==============================================
  1018. // EnumProjectMarkers
  1019.  
  1020.   int (*EnumProjectMarkers)(int idx, bool* isrgnOut, double* posOut, double* rgnendOut, const char** nameOut, int* markrgnindexnumberOut);
  1021. #endif
  1022.  
  1023. #if defined(REAPERAPI_WANT_EnumProjectMarkers2) || !defined(REAPERAPI_MINIMAL)
  1024. REAPERAPI_DEF //==============================================
  1025. // EnumProjectMarkers2
  1026.  
  1027.   int (*EnumProjectMarkers2)(ReaProject* proj, int idx, bool* isrgnOut, double* posOut, double* rgnendOut, const char** nameOut, int* markrgnindexnumberOut);
  1028. #endif
  1029.  
  1030. #if defined(REAPERAPI_WANT_EnumProjectMarkers3) || !defined(REAPERAPI_MINIMAL)
  1031. REAPERAPI_DEF //==============================================
  1032. // EnumProjectMarkers3
  1033.  
  1034.   int (*EnumProjectMarkers3)(ReaProject* proj, int idx, bool* isrgnOut, double* posOut, double* rgnendOut, const char** nameOut, int* markrgnindexnumberOut, int* colorOut);
  1035. #endif
  1036.  
  1037. #if defined(REAPERAPI_WANT_EnumProjects) || !defined(REAPERAPI_MINIMAL)
  1038. REAPERAPI_DEF //==============================================
  1039. // EnumProjects
  1040. // idx=-1 for current project,projfn can be NULL if not interested in filename. use idx 0x40000000 for currently rendering project, if any.
  1041.  
  1042.   ReaProject* (*EnumProjects)(int idx, char* projfn, int projfn_sz);
  1043. #endif
  1044.  
  1045. #if defined(REAPERAPI_WANT_EnumProjExtState) || !defined(REAPERAPI_MINIMAL)
  1046. REAPERAPI_DEF //==============================================
  1047. // EnumProjExtState
  1048. // Enumerate the data stored with the project for a specific extname. Returns false when there is no more data. See SetProjExtState, GetProjExtState.
  1049.  
  1050.   bool (*EnumProjExtState)(ReaProject* proj, const char* extname, int idx, char* keyOutOptional, int keyOutOptional_sz, char* valOutOptional, int valOutOptional_sz);
  1051. #endif
  1052.  
  1053. #if defined(REAPERAPI_WANT_EnumRegionRenderMatrix) || !defined(REAPERAPI_MINIMAL)
  1054. REAPERAPI_DEF //==============================================
  1055. // EnumRegionRenderMatrix
  1056. // Enumerate which tracks will be rendered within this region when using the region render matrix. When called with rendertrack==0, the function returns the first track that will be rendered (which may be the master track); rendertrack==1 will return the next track rendered, and so on. The function returns NULL when there are no more tracks that will be rendered within this region.
  1057.  
  1058.   MediaTrack* (*EnumRegionRenderMatrix)(ReaProject* proj, int regionindex, int rendertrack);
  1059. #endif
  1060.  
  1061. #if defined(REAPERAPI_WANT_EnumTrackMIDIProgramNames) || !defined(REAPERAPI_MINIMAL)
  1062. REAPERAPI_DEF //==============================================
  1063. // EnumTrackMIDIProgramNames
  1064. // returns false if there are no plugins on the track that support MIDI programs,or if all programs have been enumerated
  1065.  
  1066.   bool (*EnumTrackMIDIProgramNames)(int track, int programNumber, char* programName, int programName_sz);
  1067. #endif
  1068.  
  1069. #if defined(REAPERAPI_WANT_EnumTrackMIDIProgramNamesEx) || !defined(REAPERAPI_MINIMAL)
  1070. REAPERAPI_DEF //==============================================
  1071. // EnumTrackMIDIProgramNamesEx
  1072. // returns false if there are no plugins on the track that support MIDI programs,or if all programs have been enumerated
  1073.  
  1074.   bool (*EnumTrackMIDIProgramNamesEx)(ReaProject* proj, MediaTrack* track, int programNumber, char* programName, int programName_sz);
  1075. #endif
  1076.  
  1077. #if defined(REAPERAPI_WANT_Envelope_Evaluate) || !defined(REAPERAPI_MINIMAL)
  1078. REAPERAPI_DEF //==============================================
  1079. // Envelope_Evaluate
  1080. // 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 seond derivative, dddVdS is the third derivative. See GetEnvelopeScalingMode.
  1081.  
  1082.   int (*Envelope_Evaluate)(TrackEnvelope* envelope, double time, double samplerate, int samplesRequested, double* valueOutOptional, double* dVdSOutOptional, double* ddVdSOutOptional, double* dddVdSOutOptional);
  1083. #endif
  1084.  
  1085. #if defined(REAPERAPI_WANT_Envelope_SortPoints) || !defined(REAPERAPI_MINIMAL)
  1086. REAPERAPI_DEF //==============================================
  1087. // Envelope_SortPoints
  1088. // Sort envelope points by time. See SetEnvelopePoint, InsertEnvelopePoint.
  1089.  
  1090.   bool (*Envelope_SortPoints)(TrackEnvelope* envelope);
  1091. #endif
  1092.  
  1093. #if defined(REAPERAPI_WANT_file_exists) || !defined(REAPERAPI_MINIMAL)
  1094. REAPERAPI_DEF //==============================================
  1095. // file_exists
  1096. // returns true if path points to a valid, readable file
  1097.  
  1098.   bool (*file_exists)(const char* path);
  1099. #endif
  1100.  
  1101. #if defined(REAPERAPI_WANT_FindTempoTimeSigMarker) || !defined(REAPERAPI_MINIMAL)
  1102. REAPERAPI_DEF //==============================================
  1103. // FindTempoTimeSigMarker
  1104. // Find the tempo/time signature marker that falls at or before this time position (the marker that is in effect as of this time position).
  1105.  
  1106.   int (*FindTempoTimeSigMarker)(ReaProject* project, double time);
  1107. #endif
  1108.  
  1109. #if defined(REAPERAPI_WANT_format_timestr) || !defined(REAPERAPI_MINIMAL)
  1110. REAPERAPI_DEF //==============================================
  1111. // format_timestr
  1112. // time formatting mode overrides: -1=proj default.
  1113. // 0=time
  1114. // 1=measures.beats + time
  1115. // 2=measures.beats
  1116. // 3=seconds
  1117. // 4=samples
  1118. // 5=h:m:s:f
  1119.  
  1120.   void (*format_timestr)(double tpos, char* buf, int buf_sz);
  1121. #endif
  1122.  
  1123. #if defined(REAPERAPI_WANT_format_timestr_len) || !defined(REAPERAPI_MINIMAL)
  1124. REAPERAPI_DEF //==============================================
  1125. // format_timestr_len
  1126. // time formatting mode overrides: -1=proj default.
  1127. // 0=time
  1128. // 1=measures.beats + time
  1129. // 2=measures.beats
  1130. // 3=seconds
  1131. // 4=samples
  1132. // 5=h:m:s:f
  1133. // offset is start of where the length will be calculated from
  1134.  
  1135.   void (*format_timestr_len)(double tpos, char* buf, int buf_sz, double offset, int modeoverride);
  1136. #endif
  1137.  
  1138. #if defined(REAPERAPI_WANT_format_timestr_pos) || !defined(REAPERAPI_MINIMAL)
  1139. REAPERAPI_DEF //==============================================
  1140. // format_timestr_pos
  1141. // time formatting mode overrides: -1=proj default.
  1142. // 0=time
  1143. // 1=measures.beats + time
  1144. // 2=measures.beats
  1145. // 3=seconds
  1146. // 4=samples
  1147. // 5=h:m:s:f
  1148.  
  1149.   void (*format_timestr_pos)(double tpos, char* buf, int buf_sz, int modeoverride);
  1150. #endif
  1151.  
  1152. #if defined(REAPERAPI_WANT_FreeHeapPtr) || !defined(REAPERAPI_MINIMAL)
  1153. REAPERAPI_DEF //==============================================
  1154. // FreeHeapPtr
  1155. // free heap memory returned from a Reaper API function
  1156.  
  1157.   void (*FreeHeapPtr)(void* ptr);
  1158. #endif
  1159.  
  1160. #if defined(REAPERAPI_WANT_genGuid) || !defined(REAPERAPI_MINIMAL)
  1161. REAPERAPI_DEF //==============================================
  1162. // genGuid
  1163.  
  1164.   void (*genGuid)(GUID* g);
  1165. #endif
  1166.  
  1167. #if defined(REAPERAPI_WANT_get_config_var) || !defined(REAPERAPI_MINIMAL)
  1168. REAPERAPI_DEF //==============================================
  1169. // get_config_var
  1170.  
  1171.   void* (*get_config_var)(const char* name, int* szOut);
  1172. #endif
  1173.  
  1174. #if defined(REAPERAPI_WANT_get_ini_file) || !defined(REAPERAPI_MINIMAL)
  1175. REAPERAPI_DEF //==============================================
  1176. // get_ini_file
  1177.  
  1178.   const char* (*get_ini_file)();
  1179. #endif
  1180.  
  1181. #if defined(REAPERAPI_WANT_get_midi_config_var) || !defined(REAPERAPI_MINIMAL)
  1182. REAPERAPI_DEF //==============================================
  1183. // get_midi_config_var
  1184.  
  1185.   void* (*get_midi_config_var)(const char* name, int* szOut);
  1186. #endif
  1187.  
  1188. #if defined(REAPERAPI_WANT_GetActionShortcutDesc) || !defined(REAPERAPI_MINIMAL)
  1189. REAPERAPI_DEF //==============================================
  1190. // GetActionShortcutDesc
  1191. // Get the text description of a specific shortcut for the given command ID.
  1192. // See CountActionShortcuts,DeleteActionShortcut,DoActionShortcutDialog.
  1193.  
  1194.   bool (*GetActionShortcutDesc)(KbdSectionInfo* section, int cmdID, int shortcutidx, char* desc, int desclen);
  1195. #endif
  1196.  
  1197. #if defined(REAPERAPI_WANT_GetActiveTake) || !defined(REAPERAPI_MINIMAL)
  1198. REAPERAPI_DEF //==============================================
  1199. // GetActiveTake
  1200. // get the active take in this item
  1201.  
  1202.   MediaItem_Take* (*GetActiveTake)(MediaItem* item);
  1203. #endif
  1204.  
  1205. #if defined(REAPERAPI_WANT_GetAppVersion) || !defined(REAPERAPI_MINIMAL)
  1206. REAPERAPI_DEF //==============================================
  1207. // GetAppVersion
  1208.  
  1209.   const char* (*GetAppVersion)();
  1210. #endif
  1211.  
  1212. #if defined(REAPERAPI_WANT_GetAudioAccessorEndTime) || !defined(REAPERAPI_MINIMAL)
  1213. REAPERAPI_DEF //==============================================
  1214. // GetAudioAccessorEndTime
  1215. // Get the end time of the audio that can be returned from this accessor. See CreateTakeAudioAccessor, CreateTrackAudioAccessor, DestroyAudioAccessor, GetAudioAccessorHash, GetAudioAccessorStartTime, GetAudioAccessorSamples.
  1216.  
  1217.   double (*GetAudioAccessorEndTime)(AudioAccessor* accessor);
  1218. #endif
  1219.  
  1220. #if defined(REAPERAPI_WANT_GetAudioAccessorHash) || !defined(REAPERAPI_MINIMAL)
  1221. REAPERAPI_DEF //==============================================
  1222. // GetAudioAccessorHash
  1223. // Get a short hash string (128 chars or less) that will change only if the underlying samples change.  See CreateTakeAudioAccessor, CreateTrackAudioAccessor, DestroyAudioAccessor, GetAudioAccessorStartTime, GetAudioAccessorEndTime, GetAudioAccessorSamples.
  1224.  
  1225.   void (*GetAudioAccessorHash)(AudioAccessor* accessor, char* hashNeed128);
  1226. #endif
  1227.  
  1228. #if defined(REAPERAPI_WANT_GetAudioAccessorSamples) || !defined(REAPERAPI_MINIMAL)
  1229. REAPERAPI_DEF //==============================================
  1230. // GetAudioAccessorSamples
  1231. // Get a block of samples from the audio accessor. Samples are extracted immediately pre-FX, and returned interleaved (first sample of first channel, first sample of second channel...). Returns 0 if no audio, 1 if audio, -1 on error. See CreateTakeAudioAccessor, CreateTrackAudioAccessor, DestroyAudioAccessor, GetAudioAccessorHash, GetAudioAccessorStartTime, GetAudioAccessorEndTime.//
  1232. //
  1233. // This function has special handling in Python, and only returns two objects, the API function return value, and the sample buffer. Example usage:
  1234. //
  1235. // <code>tr = RPR_GetTrack(0, 0)
  1236. // aa = RPR_CreateTrackAudioAccessor(tr)
  1237. // buf = list([0]*2*1024) # 2 channels, 1024 samples each, initialized to zero
  1238. // pos = 0.0
  1239. // (ret, buf) = GetAudioAccessorSamples(aa, 44100, 2, pos, 1024, buf)
  1240. // # buf now holds the first 2*1024 audio samples from the track.
  1241. // # typically GetAudioAccessorSamples() would be called within a loop, increasing pos each time.
  1242. // </code>
  1243.  
  1244.   int (*GetAudioAccessorSamples)(AudioAccessor* accessor, int samplerate, int numchannels, double starttime_sec, int numsamplesperchannel, double* samplebuffer);
  1245. #endif
  1246.  
  1247. #if defined(REAPERAPI_WANT_GetAudioAccessorStartTime) || !defined(REAPERAPI_MINIMAL)
  1248. REAPERAPI_DEF //==============================================
  1249. // GetAudioAccessorStartTime
  1250. // Get the start time of the audio that can be returned from this accessor. See CreateTakeAudioAccessor, CreateTrackAudioAccessor, DestroyAudioAccessor, GetAudioAccessorHash, GetAudioAccessorEndTime, GetAudioAccessorSamples.
  1251.  
  1252.   double (*GetAudioAccessorStartTime)(AudioAccessor* accessor);
  1253. #endif
  1254.  
  1255. #if defined(REAPERAPI_WANT_GetColorTheme) || !defined(REAPERAPI_MINIMAL)
  1256. REAPERAPI_DEF //==============================================
  1257. // GetColorTheme
  1258. // deprecated?
  1259.  
  1260.   INT_PTR (*GetColorTheme)(int idx, int defval);
  1261. #endif
  1262.  
  1263. #if defined(REAPERAPI_WANT_GetColorThemeStruct) || !defined(REAPERAPI_MINIMAL)
  1264. REAPERAPI_DEF //==============================================
  1265. // GetColorThemeStruct
  1266. // returns the whole color theme (icontheme.h) and the size
  1267.  
  1268.   void* (*GetColorThemeStruct)(int* szOut);
  1269. #endif
  1270.  
  1271. #if defined(REAPERAPI_WANT_GetConfigWantsDock) || !defined(REAPERAPI_MINIMAL)
  1272. REAPERAPI_DEF //==============================================
  1273. // GetConfigWantsDock
  1274. // gets the dock ID desired by ident_str, if any
  1275.  
  1276.   int (*GetConfigWantsDock)(const char* ident_str);
  1277. #endif
  1278.  
  1279. #if defined(REAPERAPI_WANT_GetContextMenu) || !defined(REAPERAPI_MINIMAL)
  1280. REAPERAPI_DEF //==============================================
  1281. // GetContextMenu
  1282. // gets context menus. submenu 0:trackctl, 1:mediaitems, 2:ruler, 3:empty track area
  1283.  
  1284.   HMENU (*GetContextMenu)(int idx);
  1285. #endif
  1286.  
  1287. #if defined(REAPERAPI_WANT_GetCurrentProjectInLoadSave) || !defined(REAPERAPI_MINIMAL)
  1288. REAPERAPI_DEF //==============================================
  1289. // GetCurrentProjectInLoadSave
  1290. // returns current project if in load/save (usually only used from project_config_extension_t)
  1291.  
  1292.   ReaProject* (*GetCurrentProjectInLoadSave)();
  1293. #endif
  1294.  
  1295. #if defined(REAPERAPI_WANT_GetCursorContext) || !defined(REAPERAPI_MINIMAL)
  1296. REAPERAPI_DEF //==============================================
  1297. // GetCursorContext
  1298. // return the current cursor context: 0 if track panels, 1 if items, 2 if envelopes, otherwise unknown
  1299.  
  1300.   int (*GetCursorContext)();
  1301. #endif
  1302.  
  1303. #if defined(REAPERAPI_WANT_GetCursorContext2) || !defined(REAPERAPI_MINIMAL)
  1304. REAPERAPI_DEF //==============================================
  1305. // GetCursorContext2
  1306. // 0 if track panels, 1 if items, 2 if envelopes, otherwise unknown (unlikely when want_last_valid is true)
  1307.  
  1308.   int (*GetCursorContext2)(bool want_last_valid);
  1309. #endif
  1310.  
  1311. #if defined(REAPERAPI_WANT_GetCursorPosition) || !defined(REAPERAPI_MINIMAL)
  1312. REAPERAPI_DEF //==============================================
  1313. // GetCursorPosition
  1314. // edit cursor position
  1315.  
  1316.   double (*GetCursorPosition)();
  1317. #endif
  1318.  
  1319. #if defined(REAPERAPI_WANT_GetCursorPositionEx) || !defined(REAPERAPI_MINIMAL)
  1320. REAPERAPI_DEF //==============================================
  1321. // GetCursorPositionEx
  1322. // edit cursor position
  1323.  
  1324.   double (*GetCursorPositionEx)(ReaProject* proj);
  1325. #endif
  1326.  
  1327. #if defined(REAPERAPI_WANT_GetDisplayedMediaItemColor) || !defined(REAPERAPI_MINIMAL)
  1328. REAPERAPI_DEF //==============================================
  1329. // GetDisplayedMediaItemColor
  1330. // see GetDisplayedMediaItemColor2.
  1331.  
  1332.   int (*GetDisplayedMediaItemColor)(MediaItem* item);
  1333. #endif
  1334.  
  1335. #if defined(REAPERAPI_WANT_GetDisplayedMediaItemColor2) || !defined(REAPERAPI_MINIMAL)
  1336. REAPERAPI_DEF //==============================================
  1337. // GetDisplayedMediaItemColor2
  1338. // Returns the custom take, item, or track color that is used (according to the user preference) to color the media item. The returned color is OS dependent|0x01000000 (i.e. ColorToNative(r,g,b)|0x01000000), so a return of zero means "no color", not black.
  1339.  
  1340.   int (*GetDisplayedMediaItemColor2)(MediaItem* item, MediaItem_Take* take);
  1341. #endif
  1342.  
  1343. #if defined(REAPERAPI_WANT_GetEnvelopeName) || !defined(REAPERAPI_MINIMAL)
  1344. REAPERAPI_DEF //==============================================
  1345. // GetEnvelopeName
  1346.  
  1347.   bool (*GetEnvelopeName)(TrackEnvelope* env, char* buf, int buf_sz);
  1348. #endif
  1349.  
  1350. #if defined(REAPERAPI_WANT_GetEnvelopePoint) || !defined(REAPERAPI_MINIMAL)
  1351. REAPERAPI_DEF //==============================================
  1352. // GetEnvelopePoint
  1353. // Get the attributes of an envelope point. See GetEnvelopePointByTime, SetEnvelopePoint.
  1354.  
  1355.   bool (*GetEnvelopePoint)(TrackEnvelope* envelope, int ptidx, double* timeOutOptional, double* valueOutOptional, int* shapeOutOptional, double* tensionOutOptional, bool* selectedOutOptional);
  1356. #endif
  1357.  
  1358. #if defined(REAPERAPI_WANT_GetEnvelopePointByTime) || !defined(REAPERAPI_MINIMAL)
  1359. REAPERAPI_DEF //==============================================
  1360. // GetEnvelopePointByTime
  1361. // Returns the envelope point at or immediately prior to the given time position. See GetEnvelopePoint, SetEnvelopePoint, Envelope_Evaluate.
  1362.  
  1363.   int (*GetEnvelopePointByTime)(TrackEnvelope* envelope, double time);
  1364. #endif
  1365.  
  1366. #if defined(REAPERAPI_WANT_GetEnvelopeScalingMode) || !defined(REAPERAPI_MINIMAL)
  1367. REAPERAPI_DEF //==============================================
  1368. // GetEnvelopeScalingMode
  1369. // Returns the envelope scaling mode: 0=no scaling, 1=fader scaling. All API functions deal with raw envelope point values, to convert raw from/to scaled values see ScaleFromEnvelopeMode, ScaleToEnvelopeMode.
  1370.  
  1371.   int (*GetEnvelopeScalingMode)(TrackEnvelope* env);
  1372. #endif
  1373.  
  1374. #if defined(REAPERAPI_WANT_GetEnvelopeStateChunk) || !defined(REAPERAPI_MINIMAL)
  1375. REAPERAPI_DEF //==============================================
  1376. // GetEnvelopeStateChunk
  1377. // Gets the RPPXML state of an envelope, returns true if successful. Undo flag is a performance/caching hint.
  1378.  
  1379.   bool (*GetEnvelopeStateChunk)(TrackEnvelope* env, char* strNeedBig, int strNeedBig_sz, bool isundoOptional);
  1380. #endif
  1381.  
  1382. #if defined(REAPERAPI_WANT_GetExePath) || !defined(REAPERAPI_MINIMAL)
  1383. REAPERAPI_DEF //==============================================
  1384. // GetExePath
  1385. // returns path of REAPER.exe (not including EXE), i.e. C:\Program Files\REAPER
  1386.  
  1387.   const char* (*GetExePath)();
  1388. #endif
  1389.  
  1390. #if defined(REAPERAPI_WANT_GetExtState) || !defined(REAPERAPI_MINIMAL)
  1391. REAPERAPI_DEF //==============================================
  1392. // GetExtState
  1393. // Get the extended state value for a specific section and key. See SetExtState, DeleteExtState, HasExtState.
  1394.  
  1395.   const char* (*GetExtState)(const char* section, const char* key);
  1396. #endif
  1397.  
  1398. #if defined(REAPERAPI_WANT_GetFocusedFX) || !defined(REAPERAPI_MINIMAL)
  1399. REAPERAPI_DEF //==============================================
  1400. // GetFocusedFX
  1401. // Returns 1 if a track FX window has focus, 2 if an item FX window has focus, 0 if no FX window has focus. tracknumber==0 means the master track, 1 means track 1, etc. itemnumber and fxnumber are zero-based. See GetLastTouchedFX.
  1402.  
  1403.   int (*GetFocusedFX)(int* tracknumberOut, int* itemnumberOut, int* fxnumberOut);
  1404. #endif
  1405.  
  1406. #if defined(REAPERAPI_WANT_GetFreeDiskSpaceForRecordPath) || !defined(REAPERAPI_MINIMAL)
  1407. REAPERAPI_DEF //==============================================
  1408. // GetFreeDiskSpaceForRecordPath
  1409. // returns free disk space in megabytes, pathIdx 0 for normal, 1 for alternate.
  1410.  
  1411.   int (*GetFreeDiskSpaceForRecordPath)(ReaProject* proj, int pathidx);
  1412. #endif
  1413.  
  1414. #if defined(REAPERAPI_WANT_GetFXEnvelope) || !defined(REAPERAPI_MINIMAL)
  1415. REAPERAPI_DEF //==============================================
  1416. // GetFXEnvelope
  1417. // Returns the FX parameter envelope. If the envelope does not exist and create=true, the envelope will be created.
  1418.  
  1419.   TrackEnvelope* (*GetFXEnvelope)(MediaTrack* track, int fxindex, int parameterindex, bool create);
  1420. #endif
  1421.  
  1422. #if defined(REAPERAPI_WANT_GetGlobalAutomationOverride) || !defined(REAPERAPI_MINIMAL)
  1423. REAPERAPI_DEF //==============================================
  1424. // GetGlobalAutomationOverride
  1425. // return -1=no override, 0=trim/read, 1=read, 2=touch, 3=write, 4=latch, 5=bypass
  1426.  
  1427.   int (*GetGlobalAutomationOverride)();
  1428. #endif
  1429.  
  1430. #if defined(REAPERAPI_WANT_GetHZoomLevel) || !defined(REAPERAPI_MINIMAL)
  1431. REAPERAPI_DEF //==============================================
  1432. // GetHZoomLevel
  1433. // returns pixels/second
  1434.  
  1435.   double (*GetHZoomLevel)();
  1436. #endif
  1437.  
  1438. #if defined(REAPERAPI_WANT_GetIconThemePointer) || !defined(REAPERAPI_MINIMAL)
  1439. REAPERAPI_DEF //==============================================
  1440. // GetIconThemePointer
  1441. // returns a named icontheme entry
  1442.  
  1443.   void* (*GetIconThemePointer)(const char* name);
  1444. #endif
  1445.  
  1446. #if defined(REAPERAPI_WANT_GetIconThemeStruct) || !defined(REAPERAPI_MINIMAL)
  1447. REAPERAPI_DEF //==============================================
  1448. // GetIconThemeStruct
  1449. // returns a pointer to the icon theme (icontheme.h) and the size of that struct
  1450.  
  1451.   void* (*GetIconThemeStruct)(int* szOut);
  1452. #endif
  1453.  
  1454. #if defined(REAPERAPI_WANT_GetInputChannelName) || !defined(REAPERAPI_MINIMAL)
  1455. REAPERAPI_DEF //==============================================
  1456. // GetInputChannelName
  1457.  
  1458.   const char* (*GetInputChannelName)(int channelIndex);
  1459. #endif
  1460.  
  1461. #if defined(REAPERAPI_WANT_GetInputOutputLatency) || !defined(REAPERAPI_MINIMAL)
  1462. REAPERAPI_DEF //==============================================
  1463. // GetInputOutputLatency
  1464. // Gets the audio device input/output latency in samples
  1465.  
  1466.   void (*GetInputOutputLatency)(int* inputlatencyOut, int* outputLatencyOut);
  1467. #endif
  1468.  
  1469. #if defined(REAPERAPI_WANT_GetItemEditingTime2) || !defined(REAPERAPI_MINIMAL)
  1470. REAPERAPI_DEF //==============================================
  1471. // GetItemEditingTime2
  1472. // returns time of relevant edit, set which_item to the pcm_source (if applicable), flags (if specified) will be set to 1 for edge resizing, 2 for fade change, 4 for item move
  1473.  
  1474.   double (*GetItemEditingTime2)(PCM_source** which_itemOut, int* flagsOut);
  1475. #endif
  1476.  
  1477. #if defined(REAPERAPI_WANT_GetItemProjectContext) || !defined(REAPERAPI_MINIMAL)
  1478. REAPERAPI_DEF //==============================================
  1479. // GetItemProjectContext
  1480.  
  1481.   ReaProject* (*GetItemProjectContext)(MediaItem* item);
  1482. #endif
  1483.  
  1484. #if defined(REAPERAPI_WANT_GetItemStateChunk) || !defined(REAPERAPI_MINIMAL)
  1485. REAPERAPI_DEF //==============================================
  1486. // GetItemStateChunk
  1487. // Gets the RPPXML state of an item, returns true if successful. Undo flag is a performance/caching hint.
  1488.  
  1489.   bool (*GetItemStateChunk)(MediaItem* item, char* strNeedBig, int strNeedBig_sz, bool isundoOptional);
  1490. #endif
  1491.  
  1492. #if defined(REAPERAPI_WANT_GetLastColorThemeFile) || !defined(REAPERAPI_MINIMAL)
  1493. REAPERAPI_DEF //==============================================
  1494. // GetLastColorThemeFile
  1495.  
  1496.   const char* (*GetLastColorThemeFile)();
  1497. #endif
  1498.  
  1499. #if defined(REAPERAPI_WANT_GetLastMarkerAndCurRegion) || !defined(REAPERAPI_MINIMAL)
  1500. REAPERAPI_DEF //==============================================
  1501. // GetLastMarkerAndCurRegion
  1502. // Get the last project marker before time, and/or the project region that includes time. markeridx and regionidx are returned not necessarily as the displayed marker/region index, but as the index that can be passed to EnumProjectMarkers. Either or both of markeridx and regionidx may be NULL. See EnumProjectMarkers.
  1503.  
  1504.   void (*GetLastMarkerAndCurRegion)(ReaProject* proj, double time, int* markeridxOut, int* regionidxOut);
  1505. #endif
  1506.  
  1507. #if defined(REAPERAPI_WANT_GetLastTouchedFX) || !defined(REAPERAPI_MINIMAL)
  1508. REAPERAPI_DEF //==============================================
  1509. // GetLastTouchedFX
  1510. // Returns true if the last touched FX parameter is valid, false otherwise. tracknumber==0 means the master track, 1 means track 1, etc. fxnumber and paramnumber are zero-based. See GetFocusedFX.
  1511.  
  1512.   bool (*GetLastTouchedFX)(int* tracknumberOut, int* fxnumberOut, int* paramnumberOut);
  1513. #endif
  1514.  
  1515. #if defined(REAPERAPI_WANT_GetLastTouchedTrack) || !defined(REAPERAPI_MINIMAL)
  1516. REAPERAPI_DEF //==============================================
  1517. // GetLastTouchedTrack
  1518.  
  1519.   MediaTrack* (*GetLastTouchedTrack)();
  1520. #endif
  1521.  
  1522. #if defined(REAPERAPI_WANT_GetMainHwnd) || !defined(REAPERAPI_MINIMAL)
  1523. REAPERAPI_DEF //==============================================
  1524. // GetMainHwnd
  1525.  
  1526.   HWND (*GetMainHwnd)();
  1527. #endif
  1528.  
  1529. #if defined(REAPERAPI_WANT_GetMasterMuteSoloFlags) || !defined(REAPERAPI_MINIMAL)
  1530. REAPERAPI_DEF //==============================================
  1531. // GetMasterMuteSoloFlags
  1532. // &1=master mute,&2=master solo. This is deprecated as you can just query the master track as well.
  1533.  
  1534.   int (*GetMasterMuteSoloFlags)();
  1535. #endif
  1536.  
  1537. #if defined(REAPERAPI_WANT_GetMasterTrack) || !defined(REAPERAPI_MINIMAL)
  1538. REAPERAPI_DEF //==============================================
  1539. // GetMasterTrack
  1540.  
  1541.   MediaTrack* (*GetMasterTrack)(ReaProject* proj);
  1542. #endif
  1543.  
  1544. #if defined(REAPERAPI_WANT_GetMasterTrackVisibility) || !defined(REAPERAPI_MINIMAL)
  1545. REAPERAPI_DEF //==============================================
  1546. // GetMasterTrackVisibility
  1547. // returns &1 if the master track is visible in the TCP, &2 if visible in the mixer. See SetMasterTrackVisibility.
  1548.  
  1549.   int (*GetMasterTrackVisibility)();
  1550. #endif
  1551.  
  1552. #if defined(REAPERAPI_WANT_GetMaxMidiInputs) || !defined(REAPERAPI_MINIMAL)
  1553. REAPERAPI_DEF //==============================================
  1554. // GetMaxMidiInputs
  1555. // returns max dev for midi inputs/outputs
  1556.  
  1557.   int (*GetMaxMidiInputs)();
  1558. #endif
  1559.  
  1560. #if defined(REAPERAPI_WANT_GetMaxMidiOutputs) || !defined(REAPERAPI_MINIMAL)
  1561. REAPERAPI_DEF //==============================================
  1562. // GetMaxMidiOutputs
  1563.  
  1564.   int (*GetMaxMidiOutputs)();
  1565. #endif
  1566.  
  1567. #if defined(REAPERAPI_WANT_GetMediaItem) || !defined(REAPERAPI_MINIMAL)
  1568. REAPERAPI_DEF //==============================================
  1569. // GetMediaItem
  1570. // get an item from a project by item count (zero-based) (proj=0 for active project)
  1571.  
  1572.   MediaItem* (*GetMediaItem)(ReaProject* proj, int itemidx);
  1573. #endif
  1574.  
  1575. #if defined(REAPERAPI_WANT_GetMediaItem_Track) || !defined(REAPERAPI_MINIMAL)
  1576. REAPERAPI_DEF //==============================================
  1577. // GetMediaItem_Track
  1578. // Get parent track of media item
  1579.  
  1580.   MediaTrack* (*GetMediaItem_Track)(MediaItem* item);
  1581. #endif
  1582.  
  1583. #if defined(REAPERAPI_WANT_GetMediaItemInfo_Value) || !defined(REAPERAPI_MINIMAL)
  1584. REAPERAPI_DEF //==============================================
  1585. // GetMediaItemInfo_Value
  1586. // Get media item numerical-value attributes.
  1587. // B_MUTE : bool * to muted state
  1588. // B_LOOPSRC : bool * to loop source
  1589. // B_ALLTAKESPLAY : bool * to all takes play
  1590. // B_UISEL : bool * to ui selected
  1591. // C_BEATATTACHMODE : char * to one char of beat attached mode, -1=def, 0=time, 1=allbeats, 2=beatsosonly
  1592. // C_LOCK : char * to one char of lock flags (&1 is locked, currently)
  1593. // D_VOL : double * of item volume (volume bar)
  1594. // D_POSITION : double * of item position (seconds)
  1595. // D_LENGTH : double * of item length (seconds)
  1596. // D_SNAPOFFSET : double * of item snap offset (seconds)
  1597. // D_FADEINLEN : double * of item fade in length (manual, seconds)
  1598. // D_FADEOUTLEN : double * of item fade out length (manual, seconds)
  1599. // D_FADEINDIR : double * of item fade in curve [-1; 1]
  1600. // D_FADEOUTDIR : double * of item fade out curve [-1; 1]
  1601. // D_FADEINLEN_AUTO : double * of item autofade in length (seconds, -1 for no autofade set)
  1602. // D_FADEOUTLEN_AUTO : double * of item autofade out length (seconds, -1 for no autofade set)
  1603. // C_FADEINSHAPE : int * to fadein shape, 0=linear, ...
  1604. // C_FADEOUTSHAPE : int * to fadeout shape
  1605. // I_GROUPID : int * to group ID (0 = no group)
  1606. // I_LASTY : int * to last y position in track (readonly)
  1607. // I_LASTH : int * to last height in track (readonly)
  1608. // 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).
  1609. // I_CURTAKE : int * to active take
  1610. // IP_ITEMNUMBER : int, item number within the track (read-only, returns the item number directly)
  1611. // F_FREEMODE_Y : float * to free mode y position (0..1)
  1612. // F_FREEMODE_H : float * to free mode height (0..1)
  1613.  
  1614.   double (*GetMediaItemInfo_Value)(MediaItem* item, const char* parmname);
  1615. #endif
  1616.  
  1617. #if defined(REAPERAPI_WANT_GetMediaItemNumTakes) || !defined(REAPERAPI_MINIMAL)
  1618. REAPERAPI_DEF //==============================================
  1619. // GetMediaItemNumTakes
  1620.  
  1621.   int (*GetMediaItemNumTakes)(MediaItem* item);
  1622. #endif
  1623.  
  1624. #if defined(REAPERAPI_WANT_GetMediaItemTake) || !defined(REAPERAPI_MINIMAL)
  1625. REAPERAPI_DEF //==============================================
  1626. // GetMediaItemTake
  1627.  
  1628.   MediaItem_Take* (*GetMediaItemTake)(MediaItem* item, int tk);
  1629. #endif
  1630.  
  1631. #if defined(REAPERAPI_WANT_GetMediaItemTake_Item) || !defined(REAPERAPI_MINIMAL)
  1632. REAPERAPI_DEF //==============================================
  1633. // GetMediaItemTake_Item
  1634. // Get parent item of media item take
  1635.  
  1636.   MediaItem* (*GetMediaItemTake_Item)(MediaItem_Take* take);
  1637. #endif
  1638.  
  1639. #if defined(REAPERAPI_WANT_GetMediaItemTake_Source) || !defined(REAPERAPI_MINIMAL)
  1640. REAPERAPI_DEF //==============================================
  1641. // GetMediaItemTake_Source
  1642. // Get media source of media item take
  1643.  
  1644.   PCM_source* (*GetMediaItemTake_Source)(MediaItem_Take* take);
  1645. #endif
  1646.  
  1647. #if defined(REAPERAPI_WANT_GetMediaItemTake_Track) || !defined(REAPERAPI_MINIMAL)
  1648. REAPERAPI_DEF //==============================================
  1649. // GetMediaItemTake_Track
  1650. // Get parent track of media item take
  1651.  
  1652.   MediaTrack* (*GetMediaItemTake_Track)(MediaItem_Take* take);
  1653. #endif
  1654.  
  1655. #if defined(REAPERAPI_WANT_GetMediaItemTakeByGUID) || !defined(REAPERAPI_MINIMAL)
  1656. REAPERAPI_DEF //==============================================
  1657. // GetMediaItemTakeByGUID
  1658.  
  1659.   MediaItem_Take* (*GetMediaItemTakeByGUID)(ReaProject* project, const GUID* guid);
  1660. #endif
  1661.  
  1662. #if defined(REAPERAPI_WANT_GetMediaItemTakeInfo_Value) || !defined(REAPERAPI_MINIMAL)
  1663. REAPERAPI_DEF //==============================================
  1664. // GetMediaItemTakeInfo_Value
  1665. // Get media item take numerical-value attributes.
  1666. // D_STARTOFFS : double *, start offset in take of item
  1667. // D_VOL : double *, take volume
  1668. // D_PAN : double *, take pan
  1669. // D_PANLAW : double *, take pan law (-1.0=default, 0.5=-6dB, 1.0=+0dB, etc)
  1670. // D_PLAYRATE : double *, take playrate (1.0=normal, 2.0=doublespeed, etc)
  1671. // D_PITCH : double *, take pitch adjust (in semitones, 0.0=normal, +12 = one octave up, etc)
  1672. // B_PPITCH, bool *, preserve pitch when changing rate
  1673. // I_CHANMODE, int *, channel mode (0=normal, 1=revstereo, 2=downmix, 3=l, 4=r)
  1674. // I_PITCHMODE, int *, pitch shifter mode, -1=proj default, otherwise high word=shifter low word = parameter
  1675. // 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).
  1676. // IP_TAKENUMBER : int, take number within the item (read-only, returns the take number directly)
  1677.  
  1678.   double (*GetMediaItemTakeInfo_Value)(MediaItem_Take* take, const char* parmname);
  1679. #endif
  1680.  
  1681. #if defined(REAPERAPI_WANT_GetMediaItemTrack) || !defined(REAPERAPI_MINIMAL)
  1682. REAPERAPI_DEF //==============================================
  1683. // GetMediaItemTrack
  1684.  
  1685.   MediaTrack* (*GetMediaItemTrack)(MediaItem* item);
  1686. #endif
  1687.  
  1688. #if defined(REAPERAPI_WANT_GetMediaSourceFileName) || !defined(REAPERAPI_MINIMAL)
  1689. REAPERAPI_DEF //==============================================
  1690. // GetMediaSourceFileName
  1691. // Copies the media source filename to typebuf. Note that in-project MIDI media sources have no associated filename. See GetMediaSourceParent.
  1692.  
  1693.   void (*GetMediaSourceFileName)(PCM_source* source, char* filenamebuf, int filenamebuf_sz);
  1694. #endif
  1695.  
  1696. #if defined(REAPERAPI_WANT_GetMediaSourceLength) || !defined(REAPERAPI_MINIMAL)
  1697. REAPERAPI_DEF //==============================================
  1698. // GetMediaSourceLength
  1699. // Returns the length of the source media. If the media source is beat-based, the length will be in quarter notes, otherwise it will be in seconds.
  1700.  
  1701.   double (*GetMediaSourceLength)(PCM_source* source, bool* lengthIsQNOut);
  1702. #endif
  1703.  
  1704. #if defined(REAPERAPI_WANT_GetMediaSourceNumChannels) || !defined(REAPERAPI_MINIMAL)
  1705. REAPERAPI_DEF //==============================================
  1706. // GetMediaSourceNumChannels
  1707. // Returns the number of channels in the source media.
  1708.  
  1709.   int (*GetMediaSourceNumChannels)(PCM_source* source);
  1710. #endif
  1711.  
  1712. #if defined(REAPERAPI_WANT_GetMediaSourceParent) || !defined(REAPERAPI_MINIMAL)
  1713. REAPERAPI_DEF //==============================================
  1714. // GetMediaSourceParent
  1715. // Returns the parent source, or NULL if src is the root source. This can be used to retrieve the parent properties of sections or reversed sources for example.
  1716.  
  1717.   PCM_source* (*GetMediaSourceParent)(PCM_source* src);
  1718. #endif
  1719.  
  1720. #if defined(REAPERAPI_WANT_GetMediaSourceSampleRate) || !defined(REAPERAPI_MINIMAL)
  1721. REAPERAPI_DEF //==============================================
  1722. // GetMediaSourceSampleRate
  1723. // Returns the sample rate. MIDI source media will return zero.
  1724.  
  1725.   int (*GetMediaSourceSampleRate)(PCM_source* source);
  1726. #endif
  1727.  
  1728. #if defined(REAPERAPI_WANT_GetMediaSourceType) || !defined(REAPERAPI_MINIMAL)
  1729. REAPERAPI_DEF //==============================================
  1730. // GetMediaSourceType
  1731. // copies the media source type ("WAV", "MIDI", etc) to typebuf
  1732.  
  1733.   void (*GetMediaSourceType)(PCM_source* source, char* typebuf, int typebuf_sz);
  1734. #endif
  1735.  
  1736. #if defined(REAPERAPI_WANT_GetMediaTrackInfo_Value) || !defined(REAPERAPI_MINIMAL)
  1737. REAPERAPI_DEF //==============================================
  1738. // GetMediaTrackInfo_Value
  1739. // Get track numerical-value attributes.
  1740. // B_MUTE : bool * : mute flag
  1741. // B_PHASE : bool * : invert track phase
  1742. // IP_TRACKNUMBER : int : track number (returns zero if not found, -1 for master track) (read-only, returns the int directly)
  1743. // I_SOLO : int * : 0=not soloed, 1=solo, 2=soloed in place
  1744. // I_FXEN : int * : 0=fx bypassed, nonzero = fx active
  1745. // I_RECARM : int * : 0=not record armed, 1=record armed
  1746. // 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 5 bits represent channel (0=all, 1-16=only chan), then next 5 bits represent physical input (63=all, 62=VKB)
  1747. // 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
  1748. // I_RECMON : int * : record monitor (0=off, 1=normal, 2=not when playing (tapestyle))
  1749. // I_RECMONITEMS : int * : monitor items while recording (0=off, 1=on)
  1750. // I_AUTOMODE : int * : track automation mode (0=trim/off, 1=read, 2=touch, 3=write, 4=latch
  1751. // I_NCHAN : int * : number of track channels, must be 2-64, even
  1752. // I_SELECTED : int * : track selected? 0 or 1
  1753. // I_WNDH : int * : current TCP window height (Read-only)
  1754. // 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
  1755. // I_FOLDERCOMPACT : int * : folder compacting (only valid on folders), 0=normal, 1=small, 2=tiny children
  1756. // 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))
  1757. // I_PERFFLAGS : int * : track perf flags (&1=no media buffering, &2=no anticipative FX)
  1758. // 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).
  1759. // I_HEIGHTOVERRIDE : int * : custom height override for TCP window. 0 for none, otherwise size in pixels
  1760. // D_VOL : double * : trim volume of track (0 (-inf)..1 (+0dB) .. 2 (+6dB) etc ..)
  1761. // D_PAN : double * : trim pan of track (-1..1)
  1762. // D_WIDTH : double * : width of track (-1..1)
  1763. // D_DUALPANL : double * : dualpan position 1 (-1..1), only if I_PANMODE==6
  1764. // D_DUALPANR : double * : dualpan position 2 (-1..1), only if I_PANMODE==6
  1765. // I_PANMODE : int * : pan mode (0 = classic 3.x, 3=new balance, 5=stereo pan, 6 = dual pan)
  1766. // D_PANLAW : double * : pan law of track. <0 for project default, 1.0 for +0dB, etc
  1767. // P_ENV : read only, returns TrackEnvelope *, setNewValue=<VOLENV, <PANENV, etc
  1768. // B_SHOWINMIXER : bool * : show track panel in mixer -- do not use on master
  1769. // B_SHOWINTCP : bool * : show track panel in tcp -- do not use on master
  1770. // B_MAINSEND : bool * : track sends audio to parent
  1771. // B_FREEMODE : bool * : track free-mode enabled (requires UpdateTimeline() after changing etc)
  1772. // C_BEATATTACHMODE : char * : char * to one char of beat attached mode, -1=def, 0=time, 1=allbeats, 2=beatsposonly
  1773. // F_MCP_FXSEND_SCALE : float * : scale of fx+send area in MCP (0.0=smallest allowed, 1=max allowed)
  1774. // F_MCP_SENDRGN_SCALE : float * : scale of send area as proportion of the fx+send total area (0=min allow, 1=max)
  1775.  
  1776.   double (*GetMediaTrackInfo_Value)(MediaTrack* tr, const char* parmname);
  1777. #endif
  1778.  
  1779. #if defined(REAPERAPI_WANT_GetMidiInput) || !defined(REAPERAPI_MINIMAL)
  1780. REAPERAPI_DEF //==============================================
  1781. // GetMidiInput
  1782.  
  1783.   midi_Input* (*GetMidiInput)(int idx);
  1784. #endif
  1785.  
  1786. #if defined(REAPERAPI_WANT_GetMIDIInputName) || !defined(REAPERAPI_MINIMAL)
  1787. REAPERAPI_DEF //==============================================
  1788. // GetMIDIInputName
  1789. // returns true if device present
  1790.  
  1791.   bool (*GetMIDIInputName)(int dev, char* nameout, int nameout_sz);
  1792. #endif
  1793.  
  1794. #if defined(REAPERAPI_WANT_GetMidiOutput) || !defined(REAPERAPI_MINIMAL)
  1795. REAPERAPI_DEF //==============================================
  1796. // GetMidiOutput
  1797.  
  1798.   midi_Output* (*GetMidiOutput)(int idx);
  1799. #endif
  1800.  
  1801. #if defined(REAPERAPI_WANT_GetMIDIOutputName) || !defined(REAPERAPI_MINIMAL)
  1802. REAPERAPI_DEF //==============================================
  1803. // GetMIDIOutputName
  1804. // returns true if device present
  1805.  
  1806.   bool (*GetMIDIOutputName)(int dev, char* nameout, int nameout_sz);
  1807. #endif
  1808.  
  1809. #if defined(REAPERAPI_WANT_GetMixerScroll) || !defined(REAPERAPI_MINIMAL)
  1810. REAPERAPI_DEF //==============================================
  1811. // GetMixerScroll
  1812. // Get the leftmost track visible in the mixer
  1813.  
  1814.   MediaTrack* (*GetMixerScroll)();
  1815. #endif
  1816.  
  1817. #if defined(REAPERAPI_WANT_GetMouseModifier) || !defined(REAPERAPI_MINIMAL)
  1818. REAPERAPI_DEF //==============================================
  1819. // GetMouseModifier
  1820. // Get the current mouse modifier assignment for a specific modifier key assignment, in a specific context.
  1821. // action will be filled in with the command ID number for a built-in mouse modifier
  1822. // or built-in REAPER command ID, or the custom action ID string.
  1823. // See SetMouseModifier for more information.
  1824.  
  1825.   void (*GetMouseModifier)(const char* context, int modifier_flag, char* action, int action_sz);
  1826. #endif
  1827.  
  1828. #if defined(REAPERAPI_WANT_GetNumAudioInputs) || !defined(REAPERAPI_MINIMAL)
  1829. REAPERAPI_DEF //==============================================
  1830. // GetNumAudioInputs
  1831. // Return number of normal audio hardware inputs available
  1832.  
  1833.   int (*GetNumAudioInputs)();
  1834. #endif
  1835.  
  1836. #if defined(REAPERAPI_WANT_GetNumAudioOutputs) || !defined(REAPERAPI_MINIMAL)
  1837. REAPERAPI_DEF //==============================================
  1838. // GetNumAudioOutputs
  1839. // Return number of normal audio hardware outputs available
  1840.  
  1841.   int (*GetNumAudioOutputs)();
  1842. #endif
  1843.  
  1844. #if defined(REAPERAPI_WANT_GetNumMIDIInputs) || !defined(REAPERAPI_MINIMAL)
  1845. REAPERAPI_DEF //==============================================
  1846. // GetNumMIDIInputs
  1847. // returns max number of real midi hardware inputs
  1848.  
  1849.   int (*GetNumMIDIInputs)();
  1850. #endif
  1851.  
  1852. #if defined(REAPERAPI_WANT_GetNumMIDIOutputs) || !defined(REAPERAPI_MINIMAL)
  1853. REAPERAPI_DEF //==============================================
  1854. // GetNumMIDIOutputs
  1855. // returns max number of real midi hardware outputs
  1856.  
  1857.   int (*GetNumMIDIOutputs)();
  1858. #endif
  1859.  
  1860. #if defined(REAPERAPI_WANT_GetNumTracks) || !defined(REAPERAPI_MINIMAL)
  1861. REAPERAPI_DEF //==============================================
  1862. // GetNumTracks
  1863.  
  1864.   int (*GetNumTracks)();
  1865. #endif
  1866.  
  1867. #if defined(REAPERAPI_WANT_GetOS) || !defined(REAPERAPI_MINIMAL)
  1868. REAPERAPI_DEF //==============================================
  1869. // GetOS
  1870. // Returns "Win32", "Win64", "OSX32", "OSX64", or "Other".
  1871.  
  1872.   const char* (*GetOS)();
  1873. #endif
  1874.  
  1875. #if defined(REAPERAPI_WANT_GetOutputChannelName) || !defined(REAPERAPI_MINIMAL)
  1876. REAPERAPI_DEF //==============================================
  1877. // GetOutputChannelName
  1878.  
  1879.   const char* (*GetOutputChannelName)(int channelIndex);
  1880. #endif
  1881.  
  1882. #if defined(REAPERAPI_WANT_GetOutputLatency) || !defined(REAPERAPI_MINIMAL)
  1883. REAPERAPI_DEF //==============================================
  1884. // GetOutputLatency
  1885. // returns output latency in seconds
  1886.  
  1887.   double (*GetOutputLatency)();
  1888. #endif
  1889.  
  1890. #if defined(REAPERAPI_WANT_GetParentTrack) || !defined(REAPERAPI_MINIMAL)
  1891. REAPERAPI_DEF //==============================================
  1892. // GetParentTrack
  1893.  
  1894.   MediaTrack* (*GetParentTrack)(MediaTrack* track);
  1895. #endif
  1896.  
  1897. #if defined(REAPERAPI_WANT_GetPeakFileName) || !defined(REAPERAPI_MINIMAL)
  1898. REAPERAPI_DEF //==============================================
  1899. // GetPeakFileName
  1900. // get the peak file name for a given file (can be either filename.reapeaks,or a hashed filename in another path)
  1901.  
  1902.   void (*GetPeakFileName)(const char* fn, char* buf, int buf_sz);
  1903. #endif
  1904.  
  1905. #if defined(REAPERAPI_WANT_GetPeakFileNameEx) || !defined(REAPERAPI_MINIMAL)
  1906. REAPERAPI_DEF //==============================================
  1907. // GetPeakFileNameEx
  1908. // get the peak file name for a given file (can be either filename.reapeaks,or a hashed filename in another path)
  1909.  
  1910.   void (*GetPeakFileNameEx)(const char* fn, char* buf, int buf_sz, bool forWrite);
  1911. #endif
  1912.  
  1913. #if defined(REAPERAPI_WANT_GetPeakFileNameEx2) || !defined(REAPERAPI_MINIMAL)
  1914. REAPERAPI_DEF //==============================================
  1915. // GetPeakFileNameEx2
  1916. // Like GetPeakFileNameEx, but you can specify peaksfileextension such as ".reapeaks"
  1917.  
  1918.   void (*GetPeakFileNameEx2)(const char* fn, char* buf, int buf_sz, bool forWrite, const char* peaksfileextension);
  1919. #endif
  1920.  
  1921. #if defined(REAPERAPI_WANT_GetPeaksBitmap) || !defined(REAPERAPI_MINIMAL)
  1922. REAPERAPI_DEF //==============================================
  1923. // GetPeaksBitmap
  1924. // see note in reaper_plugin.h about PCM_source_peaktransfer_t::samplerate
  1925.  
  1926.   void* (*GetPeaksBitmap)(PCM_source_peaktransfer_t* pks, double maxamp, int w, int h, LICE_IBitmap* bmp);
  1927. #endif
  1928.  
  1929. #if defined(REAPERAPI_WANT_GetPlayPosition) || !defined(REAPERAPI_MINIMAL)
  1930. REAPERAPI_DEF //==============================================
  1931. // GetPlayPosition
  1932. // returns latency-compensated actual-what-you-hear position
  1933.  
  1934.   double (*GetPlayPosition)();
  1935. #endif
  1936.  
  1937. #if defined(REAPERAPI_WANT_GetPlayPosition2) || !defined(REAPERAPI_MINIMAL)
  1938. REAPERAPI_DEF //==============================================
  1939. // GetPlayPosition2
  1940. // returns position of next audio block being processed
  1941.  
  1942.   double (*GetPlayPosition2)();
  1943. #endif
  1944.  
  1945. #if defined(REAPERAPI_WANT_GetPlayPosition2Ex) || !defined(REAPERAPI_MINIMAL)
  1946. REAPERAPI_DEF //==============================================
  1947. // GetPlayPosition2Ex
  1948. // returns position of next audio block being processed
  1949.  
  1950.   double (*GetPlayPosition2Ex)(ReaProject* proj);
  1951. #endif
  1952.  
  1953. #if defined(REAPERAPI_WANT_GetPlayPositionEx) || !defined(REAPERAPI_MINIMAL)
  1954. REAPERAPI_DEF //==============================================
  1955. // GetPlayPositionEx
  1956. // returns latency-compensated actual-what-you-hear position
  1957.  
  1958.   double (*GetPlayPositionEx)(ReaProject* proj);
  1959. #endif
  1960.  
  1961. #if defined(REAPERAPI_WANT_GetPlayState) || !defined(REAPERAPI_MINIMAL)
  1962. REAPERAPI_DEF //==============================================
  1963. // GetPlayState
  1964. // &1=playing,&2=pause,&=4 is recording
  1965.  
  1966.   int (*GetPlayState)();
  1967. #endif
  1968.  
  1969. #if defined(REAPERAPI_WANT_GetPlayStateEx) || !defined(REAPERAPI_MINIMAL)
  1970. REAPERAPI_DEF //==============================================
  1971. // GetPlayStateEx
  1972. // &1=playing,&2=pause,&=4 is recording
  1973.  
  1974.   int (*GetPlayStateEx)(ReaProject* proj);
  1975. #endif
  1976.  
  1977. #if defined(REAPERAPI_WANT_GetPreferredDiskReadMode) || !defined(REAPERAPI_MINIMAL)
  1978. REAPERAPI_DEF //==============================================
  1979. // GetPreferredDiskReadMode
  1980. // Gets user configured preferred disk read mode. mode/nb/bs are all parameters that should be passed to WDL_FileRead, see for more information.
  1981.  
  1982.   void (*GetPreferredDiskReadMode)(int* mode, int* nb, int* bs);
  1983. #endif
  1984.  
  1985. #if defined(REAPERAPI_WANT_GetPreferredDiskReadModePeak) || !defined(REAPERAPI_MINIMAL)
  1986. REAPERAPI_DEF //==============================================
  1987. // GetPreferredDiskReadModePeak
  1988. // Gets user configured preferred disk read mode for use when building peaks. mode/nb/bs are all parameters that should be passed to WDL_FileRead, see for more information.
  1989.  
  1990.   void (*GetPreferredDiskReadModePeak)(int* mode, int* nb, int* bs);
  1991. #endif
  1992.  
  1993. #if defined(REAPERAPI_WANT_GetPreferredDiskWriteMode) || !defined(REAPERAPI_MINIMAL)
  1994. REAPERAPI_DEF //==============================================
  1995. // GetPreferredDiskWriteMode
  1996. // Gets user configured preferred disk write mode. nb will receive two values, the initial and maximum write buffer counts. mode/nb/bs are all parameters that should be passed to WDL_FileWrite, see for more information.
  1997.  
  1998.   void (*GetPreferredDiskWriteMode)(int* mode, int* nb, int* bs);
  1999. #endif
  2000.  
  2001. #if defined(REAPERAPI_WANT_GetProjectLength) || !defined(REAPERAPI_MINIMAL)
  2002. REAPERAPI_DEF //==============================================
  2003. // GetProjectLength
  2004. // returns length of project (maximum of end of media item, markers, end of regions, tempo map
  2005.  
  2006.   double (*GetProjectLength)(ReaProject* proj);
  2007. #endif
  2008.  
  2009. #if defined(REAPERAPI_WANT_GetProjectPath) || !defined(REAPERAPI_MINIMAL)
  2010. REAPERAPI_DEF //==============================================
  2011. // GetProjectPath
  2012.  
  2013.   void (*GetProjectPath)(char* buf, int buf_sz);
  2014. #endif
  2015.  
  2016. #if defined(REAPERAPI_WANT_GetProjectPathEx) || !defined(REAPERAPI_MINIMAL)
  2017. REAPERAPI_DEF //==============================================
  2018. // GetProjectPathEx
  2019.  
  2020.   void (*GetProjectPathEx)(ReaProject* proj, char* buf, int buf_sz);
  2021. #endif
  2022.  
  2023. #if defined(REAPERAPI_WANT_GetProjectStateChangeCount) || !defined(REAPERAPI_MINIMAL)
  2024. REAPERAPI_DEF //==============================================
  2025. // GetProjectStateChangeCount
  2026. // returns an integer that changes when the project state changes
  2027.  
  2028.   int (*GetProjectStateChangeCount)(ReaProject* proj);
  2029. #endif
  2030.  
  2031. #if defined(REAPERAPI_WANT_GetProjectTimeOffset) || !defined(REAPERAPI_MINIMAL)
  2032. REAPERAPI_DEF //==============================================
  2033. // GetProjectTimeOffset
  2034. // Gets project time offset in seconds (project settings - project start time). If rndframe is true, the offset is rounded to a multiple of the project frame size.
  2035.  
  2036.   double (*GetProjectTimeOffset)(ReaProject* proj, bool rndframe);
  2037. #endif
  2038.  
  2039. #if defined(REAPERAPI_WANT_GetProjectTimeSignature) || !defined(REAPERAPI_MINIMAL)
  2040. REAPERAPI_DEF //==============================================
  2041. // GetProjectTimeSignature
  2042. // deprecated
  2043.  
  2044.   void (*GetProjectTimeSignature)(double* bpmOut, double* bpiOut);
  2045. #endif
  2046.  
  2047. #if defined(REAPERAPI_WANT_GetProjectTimeSignature2) || !defined(REAPERAPI_MINIMAL)
  2048. REAPERAPI_DEF //==============================================
  2049. // GetProjectTimeSignature2
  2050. // Gets basic time signature (beats per minute, numerator of time signature in bpi)
  2051. // this does not reflect tempo envelopes but is purely what is set in the project settings.
  2052.  
  2053.   void (*GetProjectTimeSignature2)(ReaProject* proj, double* bpmOut, double* bpiOut);
  2054. #endif
  2055.  
  2056. #if defined(REAPERAPI_WANT_GetProjExtState) || !defined(REAPERAPI_MINIMAL)
  2057. REAPERAPI_DEF //==============================================
  2058. // GetProjExtState
  2059. // Get the value previously associated with this extname and key, the last time the project was saved. See SetProjExtState, EnumProjExtState.
  2060.  
  2061.   int (*GetProjExtState)(ReaProject* proj, const char* extname, const char* key, char* valOutNeedBig, int valOutNeedBig_sz);
  2062. #endif
  2063.  
  2064. #if defined(REAPERAPI_WANT_GetResourcePath) || !defined(REAPERAPI_MINIMAL)
  2065. REAPERAPI_DEF //==============================================
  2066. // GetResourcePath
  2067. // returns path where ini files are stored, other things are in subdirectories.
  2068.  
  2069.   const char* (*GetResourcePath)();
  2070. #endif
  2071.  
  2072. #if defined(REAPERAPI_WANT_GetSelectedEnvelope) || !defined(REAPERAPI_MINIMAL)
  2073. REAPERAPI_DEF //==============================================
  2074. // GetSelectedEnvelope
  2075. // get the currently selected envelope, returns 0 if no envelope is selected
  2076.  
  2077.   TrackEnvelope* (*GetSelectedEnvelope)(ReaProject* proj);
  2078. #endif
  2079.  
  2080. #if defined(REAPERAPI_WANT_GetSelectedMediaItem) || !defined(REAPERAPI_MINIMAL)
  2081. REAPERAPI_DEF //==============================================
  2082. // GetSelectedMediaItem
  2083. // get a selected item by selected item count (zero-based) (proj=0 for active project)
  2084.  
  2085.   MediaItem* (*GetSelectedMediaItem)(ReaProject* proj, int selitem);
  2086. #endif
  2087.  
  2088. #if defined(REAPERAPI_WANT_GetSelectedTrack) || !defined(REAPERAPI_MINIMAL)
  2089. REAPERAPI_DEF //==============================================
  2090. // GetSelectedTrack
  2091. // get a selected track from a project by selected track count (zero-based) (proj=0 for active project)
  2092.  
  2093.   MediaTrack* (*GetSelectedTrack)(ReaProject* proj, int seltrackidx);
  2094. #endif
  2095.  
  2096. #if defined(REAPERAPI_WANT_GetSelectedTrackEnvelope) || !defined(REAPERAPI_MINIMAL)
  2097. REAPERAPI_DEF //==============================================
  2098. // GetSelectedTrackEnvelope
  2099. // get the currently selected track envelope, returns 0 if no envelope is selected
  2100.  
  2101.   TrackEnvelope* (*GetSelectedTrackEnvelope)(ReaProject* proj);
  2102. #endif
  2103.  
  2104. #if defined(REAPERAPI_WANT_GetSet_ArrangeView2) || !defined(REAPERAPI_MINIMAL)
  2105. REAPERAPI_DEF //==============================================
  2106. // GetSet_ArrangeView2
  2107.  
  2108.   void (*GetSet_ArrangeView2)(ReaProject* proj, bool isSet, int screen_x_start, int screen_x_end, double* start_timeOut, double* end_timeOut);
  2109. #endif
  2110.  
  2111. #if defined(REAPERAPI_WANT_GetSet_LoopTimeRange) || !defined(REAPERAPI_MINIMAL)
  2112. REAPERAPI_DEF //==============================================
  2113. // GetSet_LoopTimeRange
  2114.  
  2115.   void (*GetSet_LoopTimeRange)(bool isSet, bool isLoop, double* startOut, double* endOut, bool allowautoseek);
  2116. #endif
  2117.  
  2118. #if defined(REAPERAPI_WANT_GetSet_LoopTimeRange2) || !defined(REAPERAPI_MINIMAL)
  2119. REAPERAPI_DEF //==============================================
  2120. // GetSet_LoopTimeRange2
  2121.  
  2122.   void (*GetSet_LoopTimeRange2)(ReaProject* proj, bool isSet, bool isLoop, double* startOut, double* endOut, bool allowautoseek);
  2123. #endif
  2124.  
  2125. #if defined(REAPERAPI_WANT_GetSetEnvelopeState) || !defined(REAPERAPI_MINIMAL)
  2126. REAPERAPI_DEF //==============================================
  2127. // GetSetEnvelopeState
  2128. // deprecated -- see SetEnvelopeStateChunk, GetEnvelopeStateChunk
  2129.  
  2130.   bool (*GetSetEnvelopeState)(TrackEnvelope* env, char* str, int str_sz);
  2131. #endif
  2132.  
  2133. #if defined(REAPERAPI_WANT_GetSetEnvelopeState2) || !defined(REAPERAPI_MINIMAL)
  2134. REAPERAPI_DEF //==============================================
  2135. // GetSetEnvelopeState2
  2136. // deprecated -- see SetEnvelopeStateChunk, GetEnvelopeStateChunk
  2137.  
  2138.   bool (*GetSetEnvelopeState2)(TrackEnvelope* env, char* str, int str_sz, bool isundo);
  2139. #endif
  2140.  
  2141. #if defined(REAPERAPI_WANT_GetSetItemState) || !defined(REAPERAPI_MINIMAL)
  2142. REAPERAPI_DEF //==============================================
  2143. // GetSetItemState
  2144. // deprecated -- see SetItemStateChunk, GetItemStateChunk
  2145.  
  2146.   bool (*GetSetItemState)(MediaItem* item, char* str, int str_sz);
  2147. #endif
  2148.  
  2149. #if defined(REAPERAPI_WANT_GetSetItemState2) || !defined(REAPERAPI_MINIMAL)
  2150. REAPERAPI_DEF //==============================================
  2151. // GetSetItemState2
  2152. // deprecated -- see SetItemStateChunk, GetItemStateChunk
  2153.  
  2154.   bool (*GetSetItemState2)(MediaItem* item, char* str, int str_sz, bool isundo);
  2155. #endif
  2156.  
  2157. #if defined(REAPERAPI_WANT_GetSetMediaItemInfo) || !defined(REAPERAPI_MINIMAL)
  2158. REAPERAPI_DEF //==============================================
  2159. // GetSetMediaItemInfo
  2160. // P_TRACK : MediaTrack * (read only)
  2161. // P_NOTES : char * : item note text (do not write to returned pointer, use setNewValue to update)
  2162. // B_MUTE : bool * to muted state
  2163. // B_LOOPSRC : bool * to loop source
  2164. // B_ALLTAKESPLAY : bool * to all takes play
  2165. // B_UISEL : bool * to ui selected
  2166. // C_BEATATTACHMODE : char * to one char of beat attached mode, -1=def, 0=time, 1=allbeats, 2=beatsosonly
  2167. // C_LOCK : char * to one char of lock flags (&1 is locked, currently)
  2168. // D_VOL : double * of item volume (volume bar)
  2169. // D_POSITION : double * of item position (seconds)
  2170. // D_LENGTH : double * of item length (seconds)
  2171. // D_SNAPOFFSET : double * of item snap offset (seconds)
  2172. // D_FADEINLEN : double * of item fade in length (manual, seconds)
  2173. // D_FADEOUTLEN : double * of item fade out length (manual, seconds)
  2174. // D_FADEINDIR : double * of item fade in curve [-1; 1]
  2175. // D_FADEOUTDIR : double * of item fade out curve [-1; 1]
  2176. // D_FADEINLEN_AUTO : double * of item autofade in length (seconds, -1 for no autofade set)
  2177. // D_FADEOUTLEN_AUTO : double * of item autofade out length (seconds, -1 for no autofade set)
  2178. // C_FADEINSHAPE : int * to fadein shape, 0=linear, ...
  2179. // C_FADEOUTSHAPE : int * to fadeout shape
  2180. // I_GROUPID : int * to group ID (0 = no group)
  2181. // I_LASTY : int * to last y position in track (readonly)
  2182. // I_LASTH : int * to last height in track (readonly)
  2183. // 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).
  2184. // I_CURTAKE : int * to active take
  2185. // IP_ITEMNUMBER : int, item number within the track (read-only, returns the item number directly)
  2186. // F_FREEMODE_Y : float * to free mode y position (0..1)
  2187. // F_FREEMODE_H : float * to free mode height (0..1)
  2188.  
  2189.   void* (*GetSetMediaItemInfo)(MediaItem* item, const char* parmname, void* setNewValue);
  2190. #endif
  2191.  
  2192. #if defined(REAPERAPI_WANT_GetSetMediaItemTakeInfo) || !defined(REAPERAPI_MINIMAL)
  2193. REAPERAPI_DEF //==============================================
  2194. // GetSetMediaItemTakeInfo
  2195. // P_TRACK : pointer to MediaTrack (read-only)
  2196. // P_ITEM : pointer to MediaItem (read-only)
  2197. // P_SOURCE : PCM_source *. Note that if setting this, you should first retrieve the old source, set the new, THEN delete the old.
  2198. // GUID : GUID * : 16-byte GUID, can query or update
  2199. // P_NAME : char * to take name
  2200. // D_STARTOFFS : double *, start offset in take of item
  2201. // D_VOL : double *, take volume
  2202. // D_PAN : double *, take pan
  2203. // D_PANLAW : double *, take pan law (-1.0=default, 0.5=-6dB, 1.0=+0dB, etc)
  2204. // D_PLAYRATE : double *, take playrate (1.0=normal, 2.0=doublespeed, etc)
  2205. // D_PITCH : double *, take pitch adjust (in semitones, 0.0=normal, +12 = one octave up, etc)
  2206. // B_PPITCH, bool *, preserve pitch when changing rate
  2207. // I_CHANMODE, int *, channel mode (0=normal, 1=revstereo, 2=downmix, 3=l, 4=r)
  2208. // I_PITCHMODE, int *, pitch shifter mode, -1=proj default, otherwise high word=shifter low word = parameter
  2209. // 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).
  2210. // IP_TAKENUMBER : int, take number within the item (read-only, returns the take number directly)
  2211.  
  2212.   void* (*GetSetMediaItemTakeInfo)(MediaItem_Take* tk, const char* parmname, void* setNewValue);
  2213. #endif
  2214.  
  2215. #if defined(REAPERAPI_WANT_GetSetMediaItemTakeInfo_String) || !defined(REAPERAPI_MINIMAL)
  2216. REAPERAPI_DEF //==============================================
  2217. // GetSetMediaItemTakeInfo_String
  2218. // P_NAME : char * to take name
  2219.  
  2220.   bool (*GetSetMediaItemTakeInfo_String)(MediaItem_Take* tk, const char* parmname, char* stringNeedBig, bool setnewvalue);
  2221. #endif
  2222.  
  2223. #if defined(REAPERAPI_WANT_GetSetMediaTrackInfo) || !defined(REAPERAPI_MINIMAL)
  2224. REAPERAPI_DEF //==============================================
  2225. // GetSetMediaTrackInfo
  2226. // Get or set track attributes.
  2227. // P_PARTRACK : MediaTrack * : parent track (read-only)
  2228. // GUID : GUID * : 16-byte GUID, can query or update (do not use on master though)
  2229. // P_NAME : char * : track name (on master returns NULL)
  2230. // P_MCP_LAYOUT : const char * : layout name
  2231. // P_TCP_LAYOUT : const char * : layout name
  2232. //
  2233. // B_MUTE : bool * : mute flag
  2234. // B_PHASE : bool * : invert track phase
  2235. // IP_TRACKNUMBER : int : track number (returns zero if not found, -1 for master track) (read-only, returns the int directly)
  2236. // I_SOLO : int * : 0=not soloed, 1=solo, 2=soloed in place
  2237. // I_FXEN : int * : 0=fx bypassed, nonzero = fx active
  2238. // I_RECARM : int * : 0=not record armed, 1=record armed
  2239. // 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 5 bits represent channel (0=all, 1-16=only chan), then next 5 bits represent physical input (63=all, 62=VKB)
  2240. // 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
  2241. // I_RECMON : int * : record monitor (0=off, 1=normal, 2=not when playing (tapestyle))
  2242. // I_RECMONITEMS : int * : monitor items while recording (0=off, 1=on)
  2243. // I_AUTOMODE : int * : track automation mode (0=trim/off, 1=read, 2=touch, 3=write, 4=latch
  2244. // I_NCHAN : int * : number of track channels, must be 2-64, even
  2245. // I_SELECTED : int * : track selected? 0 or 1
  2246. // I_WNDH : int * : current TCP window height (Read-only)
  2247. // 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
  2248. // I_FOLDERCOMPACT : int * : folder compacting (only valid on folders), 0=normal, 1=small, 2=tiny children
  2249. // 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))
  2250. // I_PERFFLAGS : int * : track perf flags (&1=no media buffering, &2=no anticipative FX)
  2251. // 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).
  2252. // I_HEIGHTOVERRIDE : int * : custom height override for TCP window. 0 for none, otherwise size in pixels
  2253. // D_VOL : double * : trim volume of track (0 (-inf)..1 (+0dB) .. 2 (+6dB) etc ..)
  2254. // D_PAN : double * : trim pan of track (-1..1)
  2255. // D_WIDTH : double * : width of track (-1..1)
  2256. // D_DUALPANL : double * : dualpan position 1 (-1..1), only if I_PANMODE==6
  2257. // D_DUALPANR : double * : dualpan position 2 (-1..1), only if I_PANMODE==6
  2258. // I_PANMODE : int * : pan mode (0 = classic 3.x, 3=new balance, 5=stereo pan, 6 = dual pan)
  2259. // D_PANLAW : double * : pan law of track. <0 for project default, 1.0 for +0dB, etc
  2260. // P_ENV : read only, returns TrackEnvelope *, setNewValue=<VOLENV, <PANENV, etc
  2261. // B_SHOWINMIXER : bool * : show track panel in mixer -- do not use on master
  2262. // B_SHOWINTCP : bool * : show track panel in tcp -- do not use on master
  2263. // B_MAINSEND : bool * : track sends audio to parent
  2264. // B_FREEMODE : bool * : track free-mode enabled (requires UpdateTimeline() after changing etc)
  2265. // C_BEATATTACHMODE : char * : char * to one char of beat attached mode, -1=def, 0=time, 1=allbeats, 2=beatsposonly
  2266. // F_MCP_FXSEND_SCALE : float * : scale of fx+send area in MCP (0.0=smallest allowed, 1=max allowed)
  2267. // F_MCP_SENDRGN_SCALE : float * : scale of send area as proportion of the fx+send total area (0=min allow, 1=max)
  2268.  
  2269.   void* (*GetSetMediaTrackInfo)(MediaTrack* tr, const char* parmname, void* setNewVanue);
  2270. #endif
  2271.  
  2272. #if defined(REAPERAPI_WANT_GetSetMediaTrackInfo_String) || !defined(REAPERAPI_MINIMAL)
  2273. REAPERAPI_DEF //==============================================
  2274. // GetSetMediaTrackInfo_String
  2275. // Get or set track string attributes.
  2276. // P_NAME : char * : track name (on master returns NULL)
  2277. // P_MCP_LAYOUT : const char * : layout name
  2278. // P_TCP_LAYOUT : const char * : layout name
  2279. //
  2280.  
  2281.   bool (*GetSetMediaTrackInfo_String)(MediaTrack* tr, const char* parmname, char* stringNeedBig, bool setnewvalue);
  2282. #endif
  2283.  
  2284. #if defined(REAPERAPI_WANT_GetSetObjectState) || !defined(REAPERAPI_MINIMAL)
  2285. REAPERAPI_DEF //==============================================
  2286. // GetSetObjectState
  2287. // get or set the state of a {track,item,envelope} as an RPPXML chunk
  2288. // str="" to get the chunk string returned (must call FreeHeapPtr when done)
  2289. // supply str to set the state (returns zero)
  2290.  
  2291.   char* (*GetSetObjectState)(void* obj, const char* str);
  2292. #endif
  2293.  
  2294. #if defined(REAPERAPI_WANT_GetSetObjectState2) || !defined(REAPERAPI_MINIMAL)
  2295. REAPERAPI_DEF //==============================================
  2296. // GetSetObjectState2
  2297. // get or set the state of a {track,item,envelope} as an RPPXML chunk
  2298. // str="" to get the chunk string returned (must call FreeHeapPtr when done)
  2299. // supply str to set the state (returns zero)
  2300. // set isundo if the state will be used for undo purposes (which may allow REAPER to get the state more efficiently
  2301.  
  2302.   char* (*GetSetObjectState2)(void* obj, const char* str, bool isundo);
  2303. #endif
  2304.  
  2305. #if defined(REAPERAPI_WANT_GetSetRepeat) || !defined(REAPERAPI_MINIMAL)
  2306. REAPERAPI_DEF //==============================================
  2307. // GetSetRepeat
  2308. // -1 == query,0=clear,1=set,>1=toggle . returns new value
  2309.  
  2310.   int (*GetSetRepeat)(int val);
  2311. #endif
  2312.  
  2313. #if defined(REAPERAPI_WANT_GetSetRepeatEx) || !defined(REAPERAPI_MINIMAL)
  2314. REAPERAPI_DEF //==============================================
  2315. // GetSetRepeatEx
  2316. // -1 == query,0=clear,1=set,>1=toggle . returns new value
  2317.  
  2318.   int (*GetSetRepeatEx)(ReaProject* proj, int val);
  2319. #endif
  2320.  
  2321. #if defined(REAPERAPI_WANT_GetSetTrackMIDISupportFile) || !defined(REAPERAPI_MINIMAL)
  2322. REAPERAPI_DEF //==============================================
  2323. // GetSetTrackMIDISupportFile
  2324. // Get or set the filename for storage of various track MIDI characteristics. 0=MIDI colormap image file, 1=MIDI bank/program select file, 2=MIDI text string file. If fn != NULL, a new track MIDI storage file will be set; otherwise the existing track MIDI storage file will be returned.
  2325.  
  2326.   const char* (*GetSetTrackMIDISupportFile)(ReaProject* proj, MediaTrack* track, int which, const char* filename);
  2327. #endif
  2328.  
  2329. #if defined(REAPERAPI_WANT_GetSetTrackSendInfo) || !defined(REAPERAPI_MINIMAL)
  2330. REAPERAPI_DEF //==============================================
  2331. // GetSetTrackSendInfo
  2332. // category is <0 for receives, 0=sends, >0 for hardware outputs
  2333. // sendidx is 0..n (NULL on any required parameter to stop)
  2334. // parameter names:
  2335. // P_DESTTRACK : read only, returns MediaTrack *, destination track, only applies for sends/recvs
  2336. // P_SRCTRACK : read only, returns MediaTrack *, source track, only applies for sends/recvs
  2337. // P_ENV : read only, returns TrackEnvelope *, setNewValue=<VOLENV, <PANENV, etc
  2338. // B_MUTE : returns bool *, read/write
  2339. // B_PHASE : returns bool *, read/write, true to flip phase
  2340. // B_MONO : returns bool *, read/write
  2341. // D_VOL : returns double *, read/write, 1.0 = +0dB etc
  2342. // D_PAN : returns double *, read/write, -1..+1
  2343. // D_PANLAW : returns double *,read/write, 1.0=+0.0db, 0.5=-6dB, -1.0 = projdef etc
  2344. // I_SENDMODE : returns int *, read/write, 0=post-fader, 1=pre-fx, 2=post-fx(depr), 3=post-fx
  2345. // I_SRCCHAN : returns int *, read/write, index,&1024=mono, -1 for none
  2346. // I_DSTCHAN : returns int *, read/write, index, &1024=mono, otherwise stereo pair, hwout:&512=rearoute
  2347. // I_MIDIFLAGS : returns int *, read/write, low 5 bits=source channel 0=all, 1-16, next 5 bits=dest channel, 0=orig, 1-16=chan
  2348.  
  2349.   void* (*GetSetTrackSendInfo)(MediaTrack* tr, int category, int sendidx, const char* parmname, void* setNewValue);
  2350. #endif
  2351.  
  2352. #if defined(REAPERAPI_WANT_GetSetTrackState) || !defined(REAPERAPI_MINIMAL)
  2353. REAPERAPI_DEF //==============================================
  2354. // GetSetTrackState
  2355. // deprecated -- see SetTrackStateChunk, GetTrackStateChunk
  2356.  
  2357.   bool (*GetSetTrackState)(MediaTrack* track, char* str, int str_sz);
  2358. #endif
  2359.  
  2360. #if defined(REAPERAPI_WANT_GetSetTrackState2) || !defined(REAPERAPI_MINIMAL)
  2361. REAPERAPI_DEF //==============================================
  2362. // GetSetTrackState2
  2363. // deprecated -- see SetTrackStateChunk, GetTrackStateChunk
  2364.  
  2365.   bool (*GetSetTrackState2)(MediaTrack* track, char* str, int str_sz, bool isundo);
  2366. #endif
  2367.  
  2368. #if defined(REAPERAPI_WANT_GetSubProjectFromSource) || !defined(REAPERAPI_MINIMAL)
  2369. REAPERAPI_DEF //==============================================
  2370. // GetSubProjectFromSource
  2371.  
  2372.   ReaProject* (*GetSubProjectFromSource)(PCM_source* src);
  2373. #endif
  2374.  
  2375. #if defined(REAPERAPI_WANT_GetTake) || !defined(REAPERAPI_MINIMAL)
  2376. REAPERAPI_DEF //==============================================
  2377. // GetTake
  2378. // get a take from an item by take count (zero-based)
  2379.  
  2380.   MediaItem_Take* (*GetTake)(MediaItem* item, int takeidx);
  2381. #endif
  2382.  
  2383. #if defined(REAPERAPI_WANT_GetTakeEnvelope) || !defined(REAPERAPI_MINIMAL)
  2384. REAPERAPI_DEF //==============================================
  2385. // GetTakeEnvelope
  2386.  
  2387.   TrackEnvelope* (*GetTakeEnvelope)(MediaItem_Take* take, int envidx);
  2388. #endif
  2389.  
  2390. #if defined(REAPERAPI_WANT_GetTakeEnvelopeByName) || !defined(REAPERAPI_MINIMAL)
  2391. REAPERAPI_DEF //==============================================
  2392. // GetTakeEnvelopeByName
  2393.  
  2394.   TrackEnvelope* (*GetTakeEnvelopeByName)(MediaItem_Take* take, const char* envname);
  2395. #endif
  2396.  
  2397. #if defined(REAPERAPI_WANT_GetTakeName) || !defined(REAPERAPI_MINIMAL)
  2398. REAPERAPI_DEF //==============================================
  2399. // GetTakeName
  2400. // returns NULL if the take is not valid
  2401.  
  2402.   const char* (*GetTakeName)(MediaItem_Take* take);
  2403. #endif
  2404.  
  2405. #if defined(REAPERAPI_WANT_GetTakeNumStretchMarkers) || !defined(REAPERAPI_MINIMAL)
  2406. REAPERAPI_DEF //==============================================
  2407. // GetTakeNumStretchMarkers
  2408. // Returns number of stretch markers in take
  2409.  
  2410.   int (*GetTakeNumStretchMarkers)(MediaItem_Take* take);
  2411. #endif
  2412.  
  2413. #if defined(REAPERAPI_WANT_GetTakeStretchMarker) || !defined(REAPERAPI_MINIMAL)
  2414. REAPERAPI_DEF //==============================================
  2415. // GetTakeStretchMarker
  2416. // Gets information on a stretch marker, idx is 0..n. Returns false if stretch marker not valid. posOut will be set to position in item, srcposOutOptional will be set to source media position. Returns index. if input index is -1, next marker is found using position (or source position if position is -1). If position/source position are used to find marker position, their values are not updated.
  2417.  
  2418.   int (*GetTakeStretchMarker)(MediaItem_Take* take, int idx, double* posOut, double* srcposOutOptional);
  2419. #endif
  2420.  
  2421. #if defined(REAPERAPI_WANT_GetTakeStretchMarkerSlope) || !defined(REAPERAPI_MINIMAL)
  2422. REAPERAPI_DEF //==============================================
  2423. // GetTakeStretchMarkerSlope
  2424. // See SetTakeStretchMarkerSlope
  2425.  
  2426.   double (*GetTakeStretchMarkerSlope)(MediaItem_Take* take, int idx);
  2427. #endif
  2428.  
  2429. #if defined(REAPERAPI_WANT_GetTCPFXParm) || !defined(REAPERAPI_MINIMAL)
  2430. REAPERAPI_DEF //==============================================
  2431. // GetTCPFXParm
  2432. // Get information about a specific FX parameter knob (see CountTCPFXParms).
  2433.  
  2434.   bool (*GetTCPFXParm)(ReaProject* project, MediaTrack* track, int index, int* fxindexOut, int* parmidxOut);
  2435. #endif
  2436.  
  2437. #if defined(REAPERAPI_WANT_GetTempoMatchPlayRate) || !defined(REAPERAPI_MINIMAL)
  2438. REAPERAPI_DEF //==============================================
  2439. // GetTempoMatchPlayRate
  2440. // 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
  2441.  
  2442.   bool (*GetTempoMatchPlayRate)(PCM_source* source, double srcscale, double position, double mult, double* rateOut, double* targetlenOut);
  2443. #endif
  2444.  
  2445. #if defined(REAPERAPI_WANT_GetTempoTimeSigMarker) || !defined(REAPERAPI_MINIMAL)
  2446. REAPERAPI_DEF //==============================================
  2447. // GetTempoTimeSigMarker
  2448. // Get information about a tempo/time signature marker. See CountTempoTimeSigMarkers, SetTempoTimeSigMarker, AddTempoTimeSigMarker.
  2449.  
  2450.   bool (*GetTempoTimeSigMarker)(ReaProject* proj, int ptidx, double* timeposOut, int* measureposOut, double* beatposOut, double* bpmOut, int* timesig_numOut, int* timesig_denomOut, bool* lineartempoOut);
  2451. #endif
  2452.  
  2453. #if defined(REAPERAPI_WANT_GetToggleCommandState) || !defined(REAPERAPI_MINIMAL)
  2454. REAPERAPI_DEF //==============================================
  2455. // GetToggleCommandState
  2456. // See GetToggleCommandStateEx.
  2457.  
  2458.   int (*GetToggleCommandState)(int command_id);
  2459. #endif
  2460.  
  2461. #if defined(REAPERAPI_WANT_GetToggleCommandState2) || !defined(REAPERAPI_MINIMAL)
  2462. REAPERAPI_DEF //==============================================
  2463. // GetToggleCommandState2
  2464. // See GetToggleCommandStateEx.
  2465.  
  2466.   int (*GetToggleCommandState2)(KbdSectionInfo* section, int command_id);
  2467. #endif
  2468.  
  2469. #if defined(REAPERAPI_WANT_GetToggleCommandStateEx) || !defined(REAPERAPI_MINIMAL)
  2470. REAPERAPI_DEF //==============================================
  2471. // GetToggleCommandStateEx
  2472. // For the main action context, the MIDI editor, or the media explorer, returns the toggle state of the action. 0=off, 1=on, -1=NA because the action does not have on/off states. For the MIDI editor, the action state for the most recently focused window will be returned.
  2473.  
  2474.   int (*GetToggleCommandStateEx)(int section_id, int command_id);
  2475. #endif
  2476.  
  2477. #if defined(REAPERAPI_WANT_GetToggleCommandStateThroughHooks) || !defined(REAPERAPI_MINIMAL)
  2478. REAPERAPI_DEF //==============================================
  2479. // GetToggleCommandStateThroughHooks
  2480. // Returns the state of an action via extension plugins' hooks.
  2481.  
  2482.   int (*GetToggleCommandStateThroughHooks)(KbdSectionInfo* section, int command_id);
  2483. #endif
  2484.  
  2485. #if defined(REAPERAPI_WANT_GetTooltipWindow) || !defined(REAPERAPI_MINIMAL)
  2486. REAPERAPI_DEF //==============================================
  2487. // GetTooltipWindow
  2488. // gets a tooltip window,in case you want to ask it for font information. Can return NULL.
  2489.  
  2490.   HWND (*GetTooltipWindow)();
  2491. #endif
  2492.  
  2493. #if defined(REAPERAPI_WANT_GetTrack) || !defined(REAPERAPI_MINIMAL)
  2494. REAPERAPI_DEF //==============================================
  2495. // GetTrack
  2496. // get a track from a project by track count (zero-based) (proj=0 for active project)
  2497.  
  2498.   MediaTrack* (*GetTrack)(ReaProject* proj, int trackidx);
  2499. #endif
  2500.  
  2501. #if defined(REAPERAPI_WANT_GetTrackAutomationMode) || !defined(REAPERAPI_MINIMAL)
  2502. REAPERAPI_DEF //==============================================
  2503. // GetTrackAutomationMode
  2504. // return the track mode, regardless of global override
  2505.  
  2506.   int (*GetTrackAutomationMode)(MediaTrack* tr);
  2507. #endif
  2508.  
  2509. #if defined(REAPERAPI_WANT_GetTrackColor) || !defined(REAPERAPI_MINIMAL)
  2510. REAPERAPI_DEF //==============================================
  2511. // GetTrackColor
  2512. // Returns the track custom color as OS dependent color|0x100000 (i.e. ColorToNative(r,g,b)|0x100000). Black is returned as 0x01000000, no color setting is returned as 0.
  2513.  
  2514.   int (*GetTrackColor)(MediaTrack* track);
  2515. #endif
  2516.  
  2517. #if defined(REAPERAPI_WANT_GetTrackDepth) || !defined(REAPERAPI_MINIMAL)
  2518. REAPERAPI_DEF //==============================================
  2519. // GetTrackDepth
  2520.  
  2521.   int (*GetTrackDepth)(MediaTrack* track);
  2522. #endif
  2523.  
  2524. #if defined(REAPERAPI_WANT_GetTrackEnvelope) || !defined(REAPERAPI_MINIMAL)
  2525. REAPERAPI_DEF //==============================================
  2526. // GetTrackEnvelope
  2527.  
  2528.   TrackEnvelope* (*GetTrackEnvelope)(MediaTrack* track, int envidx);
  2529. #endif
  2530.  
  2531. #if defined(REAPERAPI_WANT_GetTrackEnvelopeByName) || !defined(REAPERAPI_MINIMAL)
  2532. REAPERAPI_DEF //==============================================
  2533. // GetTrackEnvelopeByName
  2534.  
  2535.   TrackEnvelope* (*GetTrackEnvelopeByName)(MediaTrack* track, const char* envname);
  2536. #endif
  2537.  
  2538. #if defined(REAPERAPI_WANT_GetTrackGUID) || !defined(REAPERAPI_MINIMAL)
  2539. REAPERAPI_DEF //==============================================
  2540. // GetTrackGUID
  2541.  
  2542.   GUID* (*GetTrackGUID)(MediaTrack* tr);
  2543. #endif
  2544.  
  2545. #if defined(REAPERAPI_WANT_GetTrackInfo) || !defined(REAPERAPI_MINIMAL)
  2546. REAPERAPI_DEF //==============================================
  2547. // GetTrackInfo
  2548. // gets track info (returns name).
  2549. // track index, -1=master, 0..n, or cast a MediaTrack* to int
  2550. // if flags is non-NULL, will be set to:
  2551. // &1=folder
  2552. // &2=selected
  2553. // &4=has fx enabled
  2554. // &8=muted
  2555. // &16=soloed
  2556. // &32=SIP'd (with &16)
  2557. // &64=rec armed
  2558.  
  2559.   const char* (*GetTrackInfo)(INT_PTR track, int* flags);
  2560. #endif
  2561.  
  2562. #if defined(REAPERAPI_WANT_GetTrackMediaItem) || !defined(REAPERAPI_MINIMAL)
  2563. REAPERAPI_DEF //==============================================
  2564. // GetTrackMediaItem
  2565.  
  2566.   MediaItem* (*GetTrackMediaItem)(MediaTrack* tr, int itemidx);
  2567. #endif
  2568.  
  2569. #if defined(REAPERAPI_WANT_GetTrackMIDINoteName) || !defined(REAPERAPI_MINIMAL)
  2570. REAPERAPI_DEF //==============================================
  2571. // GetTrackMIDINoteName
  2572.  
  2573.   const char* (*GetTrackMIDINoteName)(int track, int note, int chan);
  2574. #endif
  2575.  
  2576. #if defined(REAPERAPI_WANT_GetTrackMIDINoteNameEx) || !defined(REAPERAPI_MINIMAL)
  2577. REAPERAPI_DEF //==============================================
  2578. // GetTrackMIDINoteNameEx
  2579.  
  2580.   const char* (*GetTrackMIDINoteNameEx)(ReaProject* proj, MediaTrack* track, int note, int chan);
  2581. #endif
  2582.  
  2583. #if defined(REAPERAPI_WANT_GetTrackMIDINoteRange) || !defined(REAPERAPI_MINIMAL)
  2584. REAPERAPI_DEF //==============================================
  2585. // GetTrackMIDINoteRange
  2586.  
  2587.   void (*GetTrackMIDINoteRange)(ReaProject* proj, MediaTrack* track, int* note_loOut, int* note_hiOut);
  2588. #endif
  2589.  
  2590. #if defined(REAPERAPI_WANT_GetTrackNumMediaItems) || !defined(REAPERAPI_MINIMAL)
  2591. REAPERAPI_DEF //==============================================
  2592. // GetTrackNumMediaItems
  2593.  
  2594.   int (*GetTrackNumMediaItems)(MediaTrack* tr);
  2595. #endif
  2596.  
  2597. #if defined(REAPERAPI_WANT_GetTrackNumSends) || !defined(REAPERAPI_MINIMAL)
  2598. REAPERAPI_DEF //==============================================
  2599. // GetTrackNumSends
  2600. // returns number of sends/receives/hardware outputs - category is <0 for receives, 0=sends, >0 for hardware outputs
  2601.  
  2602.   int (*GetTrackNumSends)(MediaTrack* tr, int category);
  2603. #endif
  2604.  
  2605. #if defined(REAPERAPI_WANT_GetTrackReceiveName) || !defined(REAPERAPI_MINIMAL)
  2606. REAPERAPI_DEF //==============================================
  2607. // GetTrackReceiveName
  2608.  
  2609.   bool (*GetTrackReceiveName)(MediaTrack* track, int recv_index, char* buf, int buf_sz);
  2610. #endif
  2611.  
  2612. #if defined(REAPERAPI_WANT_GetTrackReceiveUIMute) || !defined(REAPERAPI_MINIMAL)
  2613. REAPERAPI_DEF //==============================================
  2614. // GetTrackReceiveUIMute
  2615.  
  2616.   bool (*GetTrackReceiveUIMute)(MediaTrack* track, int recv_index, bool* muteOut);
  2617. #endif
  2618.  
  2619. #if defined(REAPERAPI_WANT_GetTrackReceiveUIVolPan) || !defined(REAPERAPI_MINIMAL)
  2620. REAPERAPI_DEF //==============================================
  2621. // GetTrackReceiveUIVolPan
  2622.  
  2623.   bool (*GetTrackReceiveUIVolPan)(MediaTrack* track, int recv_index, double* volumeOut, double* panOut);
  2624. #endif
  2625.  
  2626. #if defined(REAPERAPI_WANT_GetTrackSendName) || !defined(REAPERAPI_MINIMAL)
  2627. REAPERAPI_DEF //==============================================
  2628. // GetTrackSendName
  2629.  
  2630.   bool (*GetTrackSendName)(MediaTrack* track, int send_index, char* buf, int buf_sz);
  2631. #endif
  2632.  
  2633. #if defined(REAPERAPI_WANT_GetTrackSendUIMute) || !defined(REAPERAPI_MINIMAL)
  2634. REAPERAPI_DEF //==============================================
  2635. // GetTrackSendUIMute
  2636.  
  2637.   bool (*GetTrackSendUIMute)(MediaTrack* track, int send_index, bool* muteOut);
  2638. #endif
  2639.  
  2640. #if defined(REAPERAPI_WANT_GetTrackSendUIVolPan) || !defined(REAPERAPI_MINIMAL)
  2641. REAPERAPI_DEF //==============================================
  2642. // GetTrackSendUIVolPan
  2643.  
  2644.   bool (*GetTrackSendUIVolPan)(MediaTrack* track, int send_index, double* volumeOut, double* panOut);
  2645. #endif
  2646.  
  2647. #if defined(REAPERAPI_WANT_GetTrackState) || !defined(REAPERAPI_MINIMAL)
  2648. REAPERAPI_DEF //==============================================
  2649. // GetTrackState
  2650. // Gets track state, returns track name.
  2651. // flags will be set to:
  2652. // &1=folder
  2653. // &2=selected
  2654. // &4=has fx enabled
  2655. // &8=muted
  2656. // &16=soloed
  2657. // &32=SIP'd (with &16)
  2658. // &64=rec armed
  2659.  
  2660.   const char* (*GetTrackState)(MediaTrack* track, int* flagsOut);
  2661. #endif
  2662.  
  2663. #if defined(REAPERAPI_WANT_GetTrackStateChunk) || !defined(REAPERAPI_MINIMAL)
  2664. REAPERAPI_DEF //==============================================
  2665. // GetTrackStateChunk
  2666. // Gets the RPPXML state of a track, returns true if successful. Undo flag is a performance/caching hint.
  2667.  
  2668.   bool (*GetTrackStateChunk)(MediaTrack* track, char* strNeedBig, int strNeedBig_sz, bool isundoOptional);
  2669. #endif
  2670.  
  2671. #if defined(REAPERAPI_WANT_GetTrackUIMute) || !defined(REAPERAPI_MINIMAL)
  2672. REAPERAPI_DEF //==============================================
  2673. // GetTrackUIMute
  2674.  
  2675.   bool (*GetTrackUIMute)(MediaTrack* track, bool* muteOut);
  2676. #endif
  2677.  
  2678. #if defined(REAPERAPI_WANT_GetTrackUIPan) || !defined(REAPERAPI_MINIMAL)
  2679. REAPERAPI_DEF //==============================================
  2680. // GetTrackUIPan
  2681.  
  2682.   bool (*GetTrackUIPan)(MediaTrack* track, double* pan1Out, double* pan2Out, int* panmodeOut);
  2683. #endif
  2684.  
  2685. #if defined(REAPERAPI_WANT_GetTrackUIVolPan) || !defined(REAPERAPI_MINIMAL)
  2686. REAPERAPI_DEF //==============================================
  2687. // GetTrackUIVolPan
  2688.  
  2689.   bool (*GetTrackUIVolPan)(MediaTrack* track, double* volumeOut, double* panOut);
  2690. #endif
  2691.  
  2692. #if defined(REAPERAPI_WANT_GetUserFileNameForRead) || !defined(REAPERAPI_MINIMAL)
  2693. REAPERAPI_DEF //==============================================
  2694. // GetUserFileNameForRead
  2695. // returns true if the user selected a valid file, false if the user canceled the dialog
  2696.  
  2697.   bool (*GetUserFileNameForRead)(char* filenameNeed4096, const char* title, const char* defext);
  2698. #endif
  2699.  
  2700. #if defined(REAPERAPI_WANT_GetUserInputs) || !defined(REAPERAPI_MINIMAL)
  2701. REAPERAPI_DEF //==============================================
  2702. // GetUserInputs
  2703. // Get values from the user.
  2704. // If a caption begins with *, for example "*password", the edit field will not display the input text.
  2705. // Values are returned as a comma-separated string. Returns false if the user canceled the dialog.
  2706.  
  2707.   bool (*GetUserInputs)(const char* title, int num_inputs, const char* captions_csv, char* retvals_csv, int retvals_csv_sz);
  2708. #endif
  2709.  
  2710. #if defined(REAPERAPI_WANT_GoToMarker) || !defined(REAPERAPI_MINIMAL)
  2711. REAPERAPI_DEF //==============================================
  2712. // GoToMarker
  2713. // Go to marker. If use_timeline_order==true, marker_index 1 refers to the first marker on the timeline.  If use_timeline_order==false, marker_index 1 refers to the first marker with the user-editable index of 1.
  2714.  
  2715.   void (*GoToMarker)(ReaProject* proj, int marker_index, bool use_timeline_order);
  2716. #endif
  2717.  
  2718. #if defined(REAPERAPI_WANT_GoToRegion) || !defined(REAPERAPI_MINIMAL)
  2719. REAPERAPI_DEF //==============================================
  2720. // GoToRegion
  2721. // Seek to region after current region finishes playing (smooth seek). If use_timeline_order==true, region_index 1 refers to the first region on the timeline.  If use_timeline_order==false, region_index 1 refers to the first region with the user-editable index of 1.
  2722.  
  2723.   void (*GoToRegion)(ReaProject* proj, int region_index, bool use_timeline_order);
  2724. #endif
  2725.  
  2726. #if defined(REAPERAPI_WANT_GR_SelectColor) || !defined(REAPERAPI_MINIMAL)
  2727. REAPERAPI_DEF //==============================================
  2728. // GR_SelectColor
  2729. // Runs the system color chooser dialog.  Returns 0 if the user cancels the dialog.
  2730.  
  2731.   int (*GR_SelectColor)(HWND hwnd, int* colorOut);
  2732. #endif
  2733.  
  2734. #if defined(REAPERAPI_WANT_GSC_mainwnd) || !defined(REAPERAPI_MINIMAL)
  2735. REAPERAPI_DEF //==============================================
  2736. // GSC_mainwnd
  2737. // this is just like win32 GetSysColor() but can have overrides.
  2738.  
  2739.   int (*GSC_mainwnd)(int t);
  2740. #endif
  2741.  
  2742. #if defined(REAPERAPI_WANT_guidToString) || !defined(REAPERAPI_MINIMAL)
  2743. REAPERAPI_DEF //==============================================
  2744. // guidToString
  2745. // dest should be at least 64 chars long to be safe
  2746.  
  2747.   void (*guidToString)(const GUID* g, char* destNeed64);
  2748. #endif
  2749.  
  2750. #if defined(REAPERAPI_WANT_HasExtState) || !defined(REAPERAPI_MINIMAL)
  2751. REAPERAPI_DEF //==============================================
  2752. // HasExtState
  2753. // Returns true if there exists an extended state value for a specific section and key. See SetExtState, GetExtState, DeleteExtState.
  2754.  
  2755.   bool (*HasExtState)(const char* section, const char* key);
  2756. #endif
  2757.  
  2758. #if defined(REAPERAPI_WANT_HasTrackMIDIPrograms) || !defined(REAPERAPI_MINIMAL)
  2759. REAPERAPI_DEF //==============================================
  2760. // HasTrackMIDIPrograms
  2761. // returns name of track plugin that is supplying MIDI programs,or NULL if there is none
  2762.  
  2763.   const char* (*HasTrackMIDIPrograms)(int track);
  2764. #endif
  2765.  
  2766. #if defined(REAPERAPI_WANT_HasTrackMIDIProgramsEx) || !defined(REAPERAPI_MINIMAL)
  2767. REAPERAPI_DEF //==============================================
  2768. // HasTrackMIDIProgramsEx
  2769. // returns name of track plugin that is supplying MIDI programs,or NULL if there is none
  2770.  
  2771.   const char* (*HasTrackMIDIProgramsEx)(ReaProject* proj, MediaTrack* track);
  2772. #endif
  2773.  
  2774. #if defined(REAPERAPI_WANT_Help_Set) || !defined(REAPERAPI_MINIMAL)
  2775. REAPERAPI_DEF //==============================================
  2776. // Help_Set
  2777.  
  2778.   void (*Help_Set)(const char* helpstring, bool is_temporary_help);
  2779. #endif
  2780.  
  2781. #if defined(REAPERAPI_WANT_HiresPeaksFromSource) || !defined(REAPERAPI_MINIMAL)
  2782. REAPERAPI_DEF //==============================================
  2783. // HiresPeaksFromSource
  2784.  
  2785.   void (*HiresPeaksFromSource)(PCM_source* src, PCM_source_peaktransfer_t* block);
  2786. #endif
  2787.  
  2788. #if defined(REAPERAPI_WANT_image_resolve_fn) || !defined(REAPERAPI_MINIMAL)
  2789. REAPERAPI_DEF //==============================================
  2790. // image_resolve_fn
  2791.  
  2792.   void (*image_resolve_fn)(const char* in, char* out, int out_sz);
  2793. #endif
  2794.  
  2795. #if defined(REAPERAPI_WANT_InsertEnvelopePoint) || !defined(REAPERAPI_MINIMAL)
  2796. REAPERAPI_DEF //==============================================
  2797. // InsertEnvelopePoint
  2798. // Insert an envelope point. If setting multiple points at once, set noSort=true, and call Envelope_SortPoints when done. See GetEnvelopePoint, SetEnvelopePoint, GetEnvelopeScalingMode.
  2799.  
  2800.   bool (*InsertEnvelopePoint)(TrackEnvelope* envelope, double time, double value, int shape, double tension, bool selected, bool* noSortInOptional);
  2801. #endif
  2802.  
  2803. #if defined(REAPERAPI_WANT_InsertMedia) || !defined(REAPERAPI_MINIMAL)
  2804. REAPERAPI_DEF //==============================================
  2805. // InsertMedia
  2806. // mode: 0=add to current track, 1=add new track, 3=add to selected items as takes, &4=stretch/loop to fit time sel, &8=try to match tempo 1x, &16=try to match tempo 0.5x, &32=try to match tempo 2x, &64=don't preserve pitch when matching tempo, &128=no loop/section if startpct/endpct set, &256=force loop regardless of global preference for looping imported items. &512=use high word as absolute track index if mode&3==0.
  2807.  
  2808.   int (*InsertMedia)(const char* file, int mode);
  2809. #endif
  2810.  
  2811. #if defined(REAPERAPI_WANT_InsertMediaSection) || !defined(REAPERAPI_MINIMAL)
  2812. REAPERAPI_DEF //==============================================
  2813. // InsertMediaSection
  2814.  
  2815.   int (*InsertMediaSection)(const char* file, int mode, double startpct, double endpct, double pitchshift);
  2816. #endif
  2817.  
  2818. #if defined(REAPERAPI_WANT_InsertTrackAtIndex) || !defined(REAPERAPI_MINIMAL)
  2819. REAPERAPI_DEF //==============================================
  2820. // InsertTrackAtIndex
  2821. // inserts a track at idx,of course this will be clamped to 0..GetNumTracks(). wantDefaults=TRUE for default envelopes/FX,otherwise no enabled fx/env
  2822.  
  2823.   void (*InsertTrackAtIndex)(int idx, bool wantDefaults);
  2824. #endif
  2825.  
  2826. #if defined(REAPERAPI_WANT_IsInRealTimeAudio) || !defined(REAPERAPI_MINIMAL)
  2827. REAPERAPI_DEF //==============================================
  2828. // IsInRealTimeAudio
  2829. // are we in a realtime audio thread (between OnAudioBuffer calls,not in some worker/anticipative FX thread)? threadsafe
  2830.  
  2831.   int (*IsInRealTimeAudio)();
  2832. #endif
  2833.  
  2834. #if defined(REAPERAPI_WANT_IsItemTakeActiveForPlayback) || !defined(REAPERAPI_MINIMAL)
  2835. REAPERAPI_DEF //==============================================
  2836. // IsItemTakeActiveForPlayback
  2837. // get whether a take will be played (active take, unmuted, etc)
  2838.  
  2839.   bool (*IsItemTakeActiveForPlayback)(MediaItem* item, MediaItem_Take* take);
  2840. #endif
  2841.  
  2842. #if defined(REAPERAPI_WANT_IsMediaExtension) || !defined(REAPERAPI_MINIMAL)
  2843. REAPERAPI_DEF //==============================================
  2844. // IsMediaExtension
  2845.  
  2846.   bool (*IsMediaExtension)(const char* ext, bool wantOthers);
  2847. #endif
  2848.  
  2849. #if defined(REAPERAPI_WANT_IsMediaItemSelected) || !defined(REAPERAPI_MINIMAL)
  2850. REAPERAPI_DEF //==============================================
  2851. // IsMediaItemSelected
  2852.  
  2853.   bool (*IsMediaItemSelected)(MediaItem* item);
  2854. #endif
  2855.  
  2856. #if defined(REAPERAPI_WANT_IsProjectDirty) || !defined(REAPERAPI_MINIMAL)
  2857. REAPERAPI_DEF //==============================================
  2858. // IsProjectDirty
  2859. // Is the project dirty (needing save)? Always returns 0 if 'undo/prompt to save' is disabled in preferences.
  2860.  
  2861.   int (*IsProjectDirty)(ReaProject* proj);
  2862. #endif
  2863.  
  2864. #if defined(REAPERAPI_WANT_IsREAPER) || !defined(REAPERAPI_MINIMAL)
  2865. REAPERAPI_DEF //==============================================
  2866. // IsREAPER
  2867. // Returns true if dealing with REAPER, returns false for ReaMote, etc
  2868.  
  2869.   bool (*IsREAPER)();
  2870. #endif
  2871.  
  2872. #if defined(REAPERAPI_WANT_IsTrackSelected) || !defined(REAPERAPI_MINIMAL)
  2873. REAPERAPI_DEF //==============================================
  2874. // IsTrackSelected
  2875.  
  2876.   bool (*IsTrackSelected)(MediaTrack* track);
  2877. #endif
  2878.  
  2879. #if defined(REAPERAPI_WANT_IsTrackVisible) || !defined(REAPERAPI_MINIMAL)
  2880. REAPERAPI_DEF //==============================================
  2881. // IsTrackVisible
  2882. // If mixer==true, returns true if the track is visible in the mixer.  If mixer==false, returns true if the track is visible in the track control panel.
  2883.  
  2884.   bool (*IsTrackVisible)(MediaTrack* track, bool mixer);
  2885. #endif
  2886.  
  2887. #if defined(REAPERAPI_WANT_kbd_enumerateActions) || !defined(REAPERAPI_MINIMAL)
  2888. REAPERAPI_DEF //==============================================
  2889. // kbd_enumerateActions
  2890.  
  2891.   int (*kbd_enumerateActions)(KbdSectionInfo* section, int idx, const char** nameOut);
  2892. #endif
  2893.  
  2894. #if defined(REAPERAPI_WANT_kbd_formatKeyName) || !defined(REAPERAPI_MINIMAL)
  2895. REAPERAPI_DEF //==============================================
  2896. // kbd_formatKeyName
  2897.  
  2898.   void (*kbd_formatKeyName)(ACCEL* ac, char* s);
  2899. #endif
  2900.  
  2901. #if defined(REAPERAPI_WANT_kbd_getCommandName) || !defined(REAPERAPI_MINIMAL)
  2902. REAPERAPI_DEF //==============================================
  2903. // kbd_getCommandName
  2904.  
  2905.   void (*kbd_getCommandName)(int cmd, char* s, KbdSectionInfo* section);
  2906. #endif
  2907.  
  2908. #if defined(REAPERAPI_WANT_kbd_getTextFromCmd) || !defined(REAPERAPI_MINIMAL)
  2909. REAPERAPI_DEF //==============================================
  2910. // kbd_getTextFromCmd
  2911.  
  2912.   const char* (*kbd_getTextFromCmd)(DWORD cmd, KbdSectionInfo* section);
  2913. #endif
  2914.  
  2915. #if defined(REAPERAPI_WANT_KBD_OnMainActionEx) || !defined(REAPERAPI_MINIMAL)
  2916. REAPERAPI_DEF //==============================================
  2917. // KBD_OnMainActionEx
  2918. // val/valhw are used for midi stuff.
  2919. // val=[0..127] and valhw=-1 (midi CC),
  2920. // valhw >=0 (midi pitch (valhw | val<<7)),
  2921. // relmode absolute (0) or 1/2/3 for relative adjust modes
  2922.  
  2923.   int (*KBD_OnMainActionEx)(int cmd, int val, int valhw, int relmode, HWND hwnd, ReaProject* proj);
  2924. #endif
  2925.  
  2926. #if defined(REAPERAPI_WANT_kbd_OnMidiEvent) || !defined(REAPERAPI_MINIMAL)
  2927. REAPERAPI_DEF //==============================================
  2928. // kbd_OnMidiEvent
  2929. // can be called from anywhere (threadsafe)
  2930.  
  2931.   void (*kbd_OnMidiEvent)(MIDI_event_t* evt, int dev_index);
  2932. #endif
  2933.  
  2934. #if defined(REAPERAPI_WANT_kbd_OnMidiList) || !defined(REAPERAPI_MINIMAL)
  2935. REAPERAPI_DEF //==============================================
  2936. // kbd_OnMidiList
  2937. // can be called from anywhere (threadsafe)
  2938.  
  2939.   void (*kbd_OnMidiList)(MIDI_eventlist* list, int dev_index);
  2940. #endif
  2941.  
  2942. #if defined(REAPERAPI_WANT_kbd_ProcessActionsMenu) || !defined(REAPERAPI_MINIMAL)
  2943. REAPERAPI_DEF //==============================================
  2944. // kbd_ProcessActionsMenu
  2945.  
  2946.   void (*kbd_ProcessActionsMenu)(HMENU menu, KbdSectionInfo* section);
  2947. #endif
  2948.  
  2949. #if defined(REAPERAPI_WANT_kbd_processMidiEventActionEx) || !defined(REAPERAPI_MINIMAL)
  2950. REAPERAPI_DEF //==============================================
  2951. // kbd_processMidiEventActionEx
  2952.  
  2953.   bool (*kbd_processMidiEventActionEx)(MIDI_event_t* evt, KbdSectionInfo* section, HWND hwndCtx);
  2954. #endif
  2955.  
  2956. #if defined(REAPERAPI_WANT_kbd_reprocessMenu) || !defined(REAPERAPI_MINIMAL)
  2957. REAPERAPI_DEF //==============================================
  2958. // kbd_reprocessMenu
  2959.  
  2960.   void (*kbd_reprocessMenu)(HMENU menu, KbdSectionInfo* section);
  2961. #endif
  2962.  
  2963. #if defined(REAPERAPI_WANT_kbd_RunCommandThroughHooks) || !defined(REAPERAPI_MINIMAL)
  2964. REAPERAPI_DEF //==============================================
  2965. // kbd_RunCommandThroughHooks
  2966. // actioncommandID may get modified
  2967.  
  2968.   bool (*kbd_RunCommandThroughHooks)(KbdSectionInfo* section, int* actionCommandID, int* val, int* valhw, int* relmode, HWND hwnd);
  2969. #endif
  2970.  
  2971. #if defined(REAPERAPI_WANT_kbd_translateAccelerator) || !defined(REAPERAPI_MINIMAL)
  2972. REAPERAPI_DEF //==============================================
  2973. // kbd_translateAccelerator
  2974. // time formatting mode overrides: -1=proj default.
  2975. // 0=time
  2976. // 1=measures.beats + time
  2977. // 2=measures.beats
  2978. // 3=seconds
  2979. // 4=samples
  2980. // 5=h:m:s:f
  2981.  
  2982.   int (*kbd_translateAccelerator)(HWND hwnd, MSG* msg, KbdSectionInfo* section);
  2983. #endif
  2984.  
  2985. #if defined(REAPERAPI_WANT_kbd_translateMouse) || !defined(REAPERAPI_MINIMAL)
  2986. REAPERAPI_DEF //==============================================
  2987. // kbd_translateMouse
  2988.  
  2989.   bool (*kbd_translateMouse)(void* winmsg, unsigned char* midimsg);
  2990. #endif
  2991.  
  2992. #ifndef REAPERAPI_NO_LICE
  2993. #if defined(REAPERAPI_WANT_LICE__Destroy) || !defined(REAPERAPI_MINIMAL)
  2994. REAPERAPI_DEF //==============================================
  2995. // LICE__Destroy
  2996.  
  2997.   void (*LICE__Destroy)(LICE_IBitmap* bm);
  2998. #endif
  2999.  
  3000. #if defined(REAPERAPI_WANT_LICE__DestroyFont) || !defined(REAPERAPI_MINIMAL)
  3001. REAPERAPI_DEF //==============================================
  3002. // LICE__DestroyFont
  3003.  
  3004.   void (*LICE__DestroyFont)(LICE_IFont* font);
  3005. #endif
  3006.  
  3007. #if defined(REAPERAPI_WANT_LICE__DrawText) || !defined(REAPERAPI_MINIMAL)
  3008. REAPERAPI_DEF //==============================================
  3009. // LICE__DrawText
  3010.  
  3011.   int (*LICE__DrawText)(LICE_IFont* font, LICE_IBitmap* bm, const char* str, int strcnt, RECT* rect, UINT dtFlags);
  3012. #endif
  3013.  
  3014. #if defined(REAPERAPI_WANT_LICE__GetBits) || !defined(REAPERAPI_MINIMAL)
  3015. REAPERAPI_DEF //==============================================
  3016. // LICE__GetBits
  3017.  
  3018.   void* (*LICE__GetBits)(LICE_IBitmap* bm);
  3019. #endif
  3020.  
  3021. #if defined(REAPERAPI_WANT_LICE__GetDC) || !defined(REAPERAPI_MINIMAL)
  3022. REAPERAPI_DEF //==============================================
  3023. // LICE__GetDC
  3024.  
  3025.   HDC (*LICE__GetDC)(LICE_IBitmap* bm);
  3026. #endif
  3027.  
  3028. #if defined(REAPERAPI_WANT_LICE__GetHeight) || !defined(REAPERAPI_MINIMAL)
  3029. REAPERAPI_DEF //==============================================
  3030. // LICE__GetHeight
  3031.  
  3032.   int (*LICE__GetHeight)(LICE_IBitmap* bm);
  3033. #endif
  3034.  
  3035. #if defined(REAPERAPI_WANT_LICE__GetRowSpan) || !defined(REAPERAPI_MINIMAL)
  3036. REAPERAPI_DEF //==============================================
  3037. // LICE__GetRowSpan
  3038.  
  3039.   int (*LICE__GetRowSpan)(LICE_IBitmap* bm);
  3040. #endif
  3041.  
  3042. #if defined(REAPERAPI_WANT_LICE__GetWidth) || !defined(REAPERAPI_MINIMAL)
  3043. REAPERAPI_DEF //==============================================
  3044. // LICE__GetWidth
  3045.  
  3046.   int (*LICE__GetWidth)(LICE_IBitmap* bm);
  3047. #endif
  3048.  
  3049. #if defined(REAPERAPI_WANT_LICE__IsFlipped) || !defined(REAPERAPI_MINIMAL)
  3050. REAPERAPI_DEF //==============================================
  3051. // LICE__IsFlipped
  3052.  
  3053.   bool (*LICE__IsFlipped)(LICE_IBitmap* bm);
  3054. #endif
  3055.  
  3056. #if defined(REAPERAPI_WANT_LICE__resize) || !defined(REAPERAPI_MINIMAL)
  3057. REAPERAPI_DEF //==============================================
  3058. // LICE__resize
  3059.  
  3060.   bool (*LICE__resize)(LICE_IBitmap* bm, int w, int h);
  3061. #endif
  3062.  
  3063. #if defined(REAPERAPI_WANT_LICE__SetBkColor) || !defined(REAPERAPI_MINIMAL)
  3064. REAPERAPI_DEF //==============================================
  3065. // LICE__SetBkColor
  3066.  
  3067.   LICE_pixel (*LICE__SetBkColor)(LICE_IFont* font, LICE_pixel color);
  3068. #endif
  3069.  
  3070. #if defined(REAPERAPI_WANT_LICE__SetFromHFont) || !defined(REAPERAPI_MINIMAL)
  3071. REAPERAPI_DEF //==============================================
  3072. // LICE__SetFromHFont
  3073. // font must REMAIN valid,unless LICE_FONT_FLAG_PRECALCALL is set
  3074.  
  3075.   void (*LICE__SetFromHFont)(LICE_IFont* font, HFONT hfont, int flags);
  3076. #endif
  3077.  
  3078. #if defined(REAPERAPI_WANT_LICE__SetTextColor) || !defined(REAPERAPI_MINIMAL)
  3079. REAPERAPI_DEF //==============================================
  3080. // LICE__SetTextColor
  3081.  
  3082.   LICE_pixel (*LICE__SetTextColor)(LICE_IFont* font, LICE_pixel color);
  3083. #endif
  3084.  
  3085. #if defined(REAPERAPI_WANT_LICE__SetTextCombineMode) || !defined(REAPERAPI_MINIMAL)
  3086. REAPERAPI_DEF //==============================================
  3087. // LICE__SetTextCombineMode
  3088.  
  3089.   void (*LICE__SetTextCombineMode)(LICE_IFont* ifont, int mode, float alpha);
  3090. #endif
  3091.  
  3092. #if defined(REAPERAPI_WANT_LICE_Arc) || !defined(REAPERAPI_MINIMAL)
  3093. REAPERAPI_DEF //==============================================
  3094. // LICE_Arc
  3095.  
  3096.   void (*LICE_Arc)(LICE_IBitmap* dest, float cx, float cy, float r, float minAngle, float maxAngle, LICE_pixel color, float alpha, int mode, bool aa);
  3097. #endif
  3098.  
  3099. #if defined(REAPERAPI_WANT_LICE_Blit) || !defined(REAPERAPI_MINIMAL)
  3100. REAPERAPI_DEF //==============================================
  3101. // LICE_Blit
  3102.  
  3103.   void (*LICE_Blit)(LICE_IBitmap* dest, LICE_IBitmap* src, int dstx, int dsty, int srcx, int srcy, int srcw, int srch, float alpha, int mode);
  3104. #endif
  3105.  
  3106. #if defined(REAPERAPI_WANT_LICE_Blur) || !defined(REAPERAPI_MINIMAL)
  3107. REAPERAPI_DEF //==============================================
  3108. // LICE_Blur
  3109.  
  3110.   void (*LICE_Blur)(LICE_IBitmap* dest, LICE_IBitmap* src, int dstx, int dsty, int srcx, int srcy, int srcw, int srch);
  3111. #endif
  3112.  
  3113. #if defined(REAPERAPI_WANT_LICE_BorderedRect) || !defined(REAPERAPI_MINIMAL)
  3114. REAPERAPI_DEF //==============================================
  3115. // LICE_BorderedRect
  3116.  
  3117.   void (*LICE_BorderedRect)(LICE_IBitmap* dest, int x, int y, int w, int h, LICE_pixel bgcolor, LICE_pixel fgcolor, float alpha, int mode);
  3118. #endif
  3119.  
  3120. #if defined(REAPERAPI_WANT_LICE_Circle) || !defined(REAPERAPI_MINIMAL)
  3121. REAPERAPI_DEF //==============================================
  3122. // LICE_Circle
  3123.  
  3124.   void (*LICE_Circle)(LICE_IBitmap* dest, float cx, float cy, float r, LICE_pixel color, float alpha, int mode, bool aa);
  3125. #endif
  3126.  
  3127. #if defined(REAPERAPI_WANT_LICE_Clear) || !defined(REAPERAPI_MINIMAL)
  3128. REAPERAPI_DEF //==============================================
  3129. // LICE_Clear
  3130.  
  3131.   void (*LICE_Clear)(LICE_IBitmap* dest, LICE_pixel color);
  3132. #endif
  3133.  
  3134. #if defined(REAPERAPI_WANT_LICE_ClearRect) || !defined(REAPERAPI_MINIMAL)
  3135. REAPERAPI_DEF //==============================================
  3136. // LICE_ClearRect
  3137.  
  3138.   void (*LICE_ClearRect)(LICE_IBitmap* dest, int x, int y, int w, int h, LICE_pixel mask, LICE_pixel orbits);
  3139. #endif
  3140.  
  3141. #if defined(REAPERAPI_WANT_LICE_ClipLine) || !defined(REAPERAPI_MINIMAL)
  3142. REAPERAPI_DEF //==============================================
  3143. // LICE_ClipLine
  3144. // Returns false if the line is entirely offscreen.
  3145.  
  3146.   bool (*LICE_ClipLine)(int* pX1Out, int* pY1Out, int* pX2Out, int* pY2Out, int xLo, int yLo, int xHi, int yHi);
  3147. #endif
  3148.  
  3149. #if defined(REAPERAPI_WANT_LICE_Copy) || !defined(REAPERAPI_MINIMAL)
  3150. REAPERAPI_DEF //==============================================
  3151. // LICE_Copy
  3152.  
  3153.   void (*LICE_Copy)(LICE_IBitmap* dest, LICE_IBitmap* src);
  3154. #endif
  3155.  
  3156. #if defined(REAPERAPI_WANT_LICE_CreateBitmap) || !defined(REAPERAPI_MINIMAL)
  3157. REAPERAPI_DEF //==============================================
  3158. // LICE_CreateBitmap
  3159. // create a new bitmap. this is like calling new LICE_MemBitmap (mode=0) or new LICE_SysBitmap (mode=1).
  3160.  
  3161.   LICE_IBitmap* (*LICE_CreateBitmap)(int mode, int w, int h);
  3162. #endif
  3163.  
  3164. #if defined(REAPERAPI_WANT_LICE_CreateFont) || !defined(REAPERAPI_MINIMAL)
  3165. REAPERAPI_DEF //==============================================
  3166. // LICE_CreateFont
  3167.  
  3168.   LICE_IFont* (*LICE_CreateFont)();
  3169. #endif
  3170.  
  3171. #if defined(REAPERAPI_WANT_LICE_DrawChar) || !defined(REAPERAPI_MINIMAL)
  3172. REAPERAPI_DEF //==============================================
  3173. // LICE_DrawChar
  3174.  
  3175.   void (*LICE_DrawChar)(LICE_IBitmap* bm, int x, int y, char c, LICE_pixel color, float alpha, int mode);
  3176. #endif
  3177.  
  3178. #if defined(REAPERAPI_WANT_LICE_DrawGlyph) || !defined(REAPERAPI_MINIMAL)
  3179. REAPERAPI_DEF //==============================================
  3180. // LICE_DrawGlyph
  3181.  
  3182.   void (*LICE_DrawGlyph)(LICE_IBitmap* dest, int x, int y, LICE_pixel color, LICE_pixel_chan* alphas, int glyph_w, int glyph_h, float alpha, int mode);
  3183. #endif
  3184.  
  3185. #if defined(REAPERAPI_WANT_LICE_DrawRect) || !defined(REAPERAPI_MINIMAL)
  3186. REAPERAPI_DEF //==============================================
  3187. // LICE_DrawRect
  3188.  
  3189.   void (*LICE_DrawRect)(LICE_IBitmap* dest, int x, int y, int w, int h, LICE_pixel color, float alpha, int mode);
  3190. #endif
  3191.  
  3192. #if defined(REAPERAPI_WANT_LICE_DrawText) || !defined(REAPERAPI_MINIMAL)
  3193. REAPERAPI_DEF //==============================================
  3194. // LICE_DrawText
  3195.  
  3196.   void (*LICE_DrawText)(LICE_IBitmap* bm, int x, int y, const char* string, LICE_pixel color, float alpha, int mode);
  3197. #endif
  3198.  
  3199. #if defined(REAPERAPI_WANT_LICE_FillCircle) || !defined(REAPERAPI_MINIMAL)
  3200. REAPERAPI_DEF //==============================================
  3201. // LICE_FillCircle
  3202.  
  3203.   void (*LICE_FillCircle)(LICE_IBitmap* dest, float cx, float cy, float r, LICE_pixel color, float alpha, int mode, bool aa);
  3204. #endif
  3205.  
  3206. #if defined(REAPERAPI_WANT_LICE_FillConvexPolygon) || !defined(REAPERAPI_MINIMAL)
  3207. REAPERAPI_DEF //==============================================
  3208. // LICE_FillConvexPolygon
  3209.  
  3210.   void (*LICE_FillConvexPolygon)(LICE_IBitmap* dest, int* x, int* y, int npoints, LICE_pixel color, float alpha, int mode);
  3211. #endif
  3212.  
  3213. #if defined(REAPERAPI_WANT_LICE_FillRect) || !defined(REAPERAPI_MINIMAL)
  3214. REAPERAPI_DEF //==============================================
  3215. // LICE_FillRect
  3216.  
  3217.   void (*LICE_FillRect)(LICE_IBitmap* dest, int x, int y, int w, int h, LICE_pixel color, float alpha, int mode);
  3218. #endif
  3219.  
  3220. #if defined(REAPERAPI_WANT_LICE_FillTrapezoid) || !defined(REAPERAPI_MINIMAL)
  3221. REAPERAPI_DEF //==============================================
  3222. // LICE_FillTrapezoid
  3223.  
  3224.   void (*LICE_FillTrapezoid)(LICE_IBitmap* dest, int x1a, int x1b, int y1, int x2a, int x2b, int y2, LICE_pixel color, float alpha, int mode);
  3225. #endif
  3226.  
  3227. #if defined(REAPERAPI_WANT_LICE_FillTriangle) || !defined(REAPERAPI_MINIMAL)
  3228. REAPERAPI_DEF //==============================================
  3229. // LICE_FillTriangle
  3230.  
  3231.   void (*LICE_FillTriangle)(LICE_IBitmap* dest, int x1, int y1, int x2, int y2, int x3, int y3, LICE_pixel color, float alpha, int mode);
  3232. #endif
  3233.  
  3234. #if defined(REAPERAPI_WANT_LICE_GetPixel) || !defined(REAPERAPI_MINIMAL)
  3235. REAPERAPI_DEF //==============================================
  3236. // LICE_GetPixel
  3237.  
  3238.   LICE_pixel (*LICE_GetPixel)(LICE_IBitmap* bm, int x, int y);
  3239. #endif
  3240.  
  3241. #if defined(REAPERAPI_WANT_LICE_GradRect) || !defined(REAPERAPI_MINIMAL)
  3242. REAPERAPI_DEF //==============================================
  3243. // LICE_GradRect
  3244.  
  3245.   void (*LICE_GradRect)(LICE_IBitmap* dest, int dstx, int dsty, int dstw, int dsth, float ir, float ig, float ib, float ia, float drdx, float dgdx, float dbdx, float dadx, float drdy, float dgdy, float dbdy, float dady, int mode);
  3246. #endif
  3247.  
  3248. #if defined(REAPERAPI_WANT_LICE_Line) || !defined(REAPERAPI_MINIMAL)
  3249. REAPERAPI_DEF //==============================================
  3250. // LICE_Line
  3251.  
  3252.   void (*LICE_Line)(LICE_IBitmap* dest, float x1, float y1, float x2, float y2, LICE_pixel color, float alpha, int mode, bool aa);
  3253. #endif
  3254.  
  3255. #if defined(REAPERAPI_WANT_LICE_LineInt) || !defined(REAPERAPI_MINIMAL)
  3256. REAPERAPI_DEF //==============================================
  3257. // LICE_LineInt
  3258.  
  3259.   void (*LICE_LineInt)(LICE_IBitmap* dest, int x1, int y1, int x2, int y2, LICE_pixel color, float alpha, int mode, bool aa);
  3260. #endif
  3261.  
  3262. #if defined(REAPERAPI_WANT_LICE_LoadPNG) || !defined(REAPERAPI_MINIMAL)
  3263. REAPERAPI_DEF //==============================================
  3264. // LICE_LoadPNG
  3265.  
  3266.   LICE_IBitmap* (*LICE_LoadPNG)(const char* filename, LICE_IBitmap* bmp);
  3267. #endif
  3268.  
  3269. #if defined(REAPERAPI_WANT_LICE_LoadPNGFromResource) || !defined(REAPERAPI_MINIMAL)
  3270. REAPERAPI_DEF //==============================================
  3271. // LICE_LoadPNGFromResource
  3272.  
  3273.   LICE_IBitmap* (*LICE_LoadPNGFromResource)(HINSTANCE hInst, int resid, LICE_IBitmap* bmp);
  3274. #endif
  3275.  
  3276. #if defined(REAPERAPI_WANT_LICE_MeasureText) || !defined(REAPERAPI_MINIMAL)
  3277. REAPERAPI_DEF //==============================================
  3278. // LICE_MeasureText
  3279.  
  3280.   void (*LICE_MeasureText)(const char* string, int* w, int* h);
  3281. #endif
  3282.  
  3283. #if defined(REAPERAPI_WANT_LICE_MultiplyAddRect) || !defined(REAPERAPI_MINIMAL)
  3284. REAPERAPI_DEF //==============================================
  3285. // LICE_MultiplyAddRect
  3286.  
  3287.   void (*LICE_MultiplyAddRect)(LICE_IBitmap* dest, int x, int y, int w, int h, float rsc, float gsc, float bsc, float asc, float radd, float gadd, float badd, float aadd);
  3288. #endif
  3289.  
  3290. #if defined(REAPERAPI_WANT_LICE_PutPixel) || !defined(REAPERAPI_MINIMAL)
  3291. REAPERAPI_DEF //==============================================
  3292. // LICE_PutPixel
  3293.  
  3294.   void (*LICE_PutPixel)(LICE_IBitmap* bm, int x, int y, LICE_pixel color, float alpha, int mode);
  3295. #endif
  3296.  
  3297. #if defined(REAPERAPI_WANT_LICE_RotatedBlit) || !defined(REAPERAPI_MINIMAL)
  3298. REAPERAPI_DEF //==============================================
  3299. // LICE_RotatedBlit
  3300. // these coordinates are offset from the center of the image,in source pixel coordinates
  3301.  
  3302.   void (*LICE_RotatedBlit)(LICE_IBitmap* dest, LICE_IBitmap* src, int dstx, int dsty, int dstw, int dsth, float srcx, float srcy, float srcw, float srch, float angle, bool cliptosourcerect, float alpha, int mode, float rotxcent, float rotycent);
  3303. #endif
  3304.  
  3305. #if defined(REAPERAPI_WANT_LICE_RoundRect) || !defined(REAPERAPI_MINIMAL)
  3306. REAPERAPI_DEF //==============================================
  3307. // LICE_RoundRect
  3308.  
  3309.   void (*LICE_RoundRect)(LICE_IBitmap* drawbm, float xpos, float ypos, float w, float h, int cornerradius, LICE_pixel col, float alpha, int mode, bool aa);
  3310. #endif
  3311.  
  3312. #if defined(REAPERAPI_WANT_LICE_ScaledBlit) || !defined(REAPERAPI_MINIMAL)
  3313. REAPERAPI_DEF //==============================================
  3314. // LICE_ScaledBlit
  3315.  
  3316.   void (*LICE_ScaledBlit)(LICE_IBitmap* dest, LICE_IBitmap* src, int dstx, int dsty, int dstw, int dsth, float srcx, float srcy, float srcw, float srch, float alpha, int mode);
  3317. #endif
  3318.  
  3319. #if defined(REAPERAPI_WANT_LICE_SimpleFill) || !defined(REAPERAPI_MINIMAL)
  3320. REAPERAPI_DEF //==============================================
  3321. // LICE_SimpleFill
  3322.  
  3323.   void (*LICE_SimpleFill)(LICE_IBitmap* dest, int x, int y, LICE_pixel newcolor, LICE_pixel comparemask, LICE_pixel keepmask);
  3324. #endif
  3325.  
  3326. #endif // !REAPERAPI_NO_LICE
  3327. #if defined(REAPERAPI_WANT_Loop_OnArrow) || !defined(REAPERAPI_MINIMAL)
  3328. REAPERAPI_DEF //==============================================
  3329. // Loop_OnArrow
  3330. // Move the loop selection left or right. Returns true if snap is enabled.
  3331.  
  3332.   bool (*Loop_OnArrow)(ReaProject* project, int direction);
  3333. #endif
  3334.  
  3335. #if defined(REAPERAPI_WANT_Main_OnCommand) || !defined(REAPERAPI_MINIMAL)
  3336. REAPERAPI_DEF //==============================================
  3337. // Main_OnCommand
  3338. // See Main_OnCommandEx.
  3339.  
  3340.   void (*Main_OnCommand)(int command, int flag);
  3341. #endif
  3342.  
  3343. #if defined(REAPERAPI_WANT_Main_OnCommandEx) || !defined(REAPERAPI_MINIMAL)
  3344. REAPERAPI_DEF //==============================================
  3345. // Main_OnCommandEx
  3346. // Performs an action belonging to the main action section. To perform non-native actions (ReaScripts, custom or extension plugins' actions) safely, see NamedCommandLookup().
  3347.  
  3348.   void (*Main_OnCommandEx)(int command, int flag, ReaProject* proj);
  3349. #endif
  3350.  
  3351. #if defined(REAPERAPI_WANT_Main_openProject) || !defined(REAPERAPI_MINIMAL)
  3352. REAPERAPI_DEF //==============================================
  3353. // Main_openProject
  3354. // opens a project. will prompt the user to save, etc.
  3355. // if you pass a .RTrackTemplate file then it adds that to the project instead.
  3356.  
  3357.   void (*Main_openProject)(const char* name);
  3358. #endif
  3359.  
  3360. #if defined(REAPERAPI_WANT_Main_SaveProject) || !defined(REAPERAPI_MINIMAL)
  3361. REAPERAPI_DEF //==============================================
  3362. // Main_SaveProject
  3363. // Save the project.
  3364.  
  3365.   void (*Main_SaveProject)(ReaProject* proj, bool forceSaveAsInOptional);
  3366. #endif
  3367.  
  3368. #if defined(REAPERAPI_WANT_Main_UpdateLoopInfo) || !defined(REAPERAPI_MINIMAL)
  3369. REAPERAPI_DEF //==============================================
  3370. // Main_UpdateLoopInfo
  3371.  
  3372.   void (*Main_UpdateLoopInfo)(int ignoremask);
  3373. #endif
  3374.  
  3375. #if defined(REAPERAPI_WANT_MarkProjectDirty) || !defined(REAPERAPI_MINIMAL)
  3376. REAPERAPI_DEF //==============================================
  3377. // MarkProjectDirty
  3378. // Marks project as dirty (needing save) if 'undo/prompt to save' is enabled in preferences.
  3379.  
  3380.   void (*MarkProjectDirty)(ReaProject* proj);
  3381. #endif
  3382.  
  3383. #if defined(REAPERAPI_WANT_MarkTrackItemsDirty) || !defined(REAPERAPI_MINIMAL)
  3384. REAPERAPI_DEF //==============================================
  3385. // MarkTrackItemsDirty
  3386. // If track is supplied, item is ignored
  3387.  
  3388.   void (*MarkTrackItemsDirty)(MediaTrack* track, MediaItem* item);
  3389. #endif
  3390.  
  3391. #if defined(REAPERAPI_WANT_Master_GetPlayRate) || !defined(REAPERAPI_MINIMAL)
  3392. REAPERAPI_DEF //==============================================
  3393. // Master_GetPlayRate
  3394.  
  3395.   double (*Master_GetPlayRate)(ReaProject* project);
  3396. #endif
  3397.  
  3398. #if defined(REAPERAPI_WANT_Master_GetPlayRateAtTime) || !defined(REAPERAPI_MINIMAL)
  3399. REAPERAPI_DEF //==============================================
  3400. // Master_GetPlayRateAtTime
  3401.  
  3402.   double (*Master_GetPlayRateAtTime)(double time_s, ReaProject* proj);
  3403. #endif
  3404.  
  3405. #if defined(REAPERAPI_WANT_Master_GetTempo) || !defined(REAPERAPI_MINIMAL)
  3406. REAPERAPI_DEF //==============================================
  3407. // Master_GetTempo
  3408.  
  3409.   double (*Master_GetTempo)();
  3410. #endif
  3411.  
  3412. #if defined(REAPERAPI_WANT_Master_NormalizePlayRate) || !defined(REAPERAPI_MINIMAL)
  3413. REAPERAPI_DEF //==============================================
  3414. // Master_NormalizePlayRate
  3415. // Convert play rate to/from a value between 0 and 1, representing the position on the project playrate slider.
  3416.  
  3417.   double (*Master_NormalizePlayRate)(double playrate, bool isnormalized);
  3418. #endif
  3419.  
  3420. #if defined(REAPERAPI_WANT_Master_NormalizeTempo) || !defined(REAPERAPI_MINIMAL)
  3421. REAPERAPI_DEF //==============================================
  3422. // Master_NormalizeTempo
  3423. // Convert the tempo to/from a value between 0 and 1, representing bpm in the range of 40-296 bpm.
  3424.  
  3425.   double (*Master_NormalizeTempo)(double bpm, bool isnormalized);
  3426. #endif
  3427.  
  3428. #if defined(REAPERAPI_WANT_MB) || !defined(REAPERAPI_MINIMAL)
  3429. REAPERAPI_DEF //==============================================
  3430. // MB
  3431. // type 0=OK,1=OKCANCEL,2=ABORTRETRYIGNORE,3=YESNOCANCEL,4=YESNO,5=RETRYCANCEL : ret 1=OK,2=CANCEL,3=ABORT,4=RETRY,5=IGNORE,6=YES,7=NO
  3432.  
  3433.   int (*MB)(const char* msg, const char* title, int type);
  3434. #endif
  3435.  
  3436. #if defined(REAPERAPI_WANT_MediaItemDescendsFromTrack) || !defined(REAPERAPI_MINIMAL)
  3437. REAPERAPI_DEF //==============================================
  3438. // MediaItemDescendsFromTrack
  3439. // Returns 1 if the track holds the item, 2 if the track is a folder containing the track that holds the item, etc.
  3440.  
  3441.   int (*MediaItemDescendsFromTrack)(MediaItem* item, MediaTrack* track);
  3442. #endif
  3443.  
  3444. #if defined(REAPERAPI_WANT_MIDI_CountEvts) || !defined(REAPERAPI_MINIMAL)
  3445. REAPERAPI_DEF //==============================================
  3446. // MIDI_CountEvts
  3447. // Count the number of notes, CC events, and text/sysex events in a given MIDI item.
  3448.  
  3449.   int (*MIDI_CountEvts)(MediaItem_Take* take, int* notecntOut, int* ccevtcntOut, int* textsyxevtcntOut);
  3450. #endif
  3451.  
  3452. #if defined(REAPERAPI_WANT_MIDI_DeleteCC) || !defined(REAPERAPI_MINIMAL)
  3453. REAPERAPI_DEF //==============================================
  3454. // MIDI_DeleteCC
  3455. // Delete a MIDI CC event.
  3456.  
  3457.   bool (*MIDI_DeleteCC)(MediaItem_Take* take, int ccidx);
  3458. #endif
  3459.  
  3460. #if defined(REAPERAPI_WANT_MIDI_DeleteEvt) || !defined(REAPERAPI_MINIMAL)
  3461. REAPERAPI_DEF //==============================================
  3462. // MIDI_DeleteEvt
  3463. // Delete a MIDI event.
  3464.  
  3465.   bool (*MIDI_DeleteEvt)(MediaItem_Take* take, int evtidx);
  3466. #endif
  3467.  
  3468. #if defined(REAPERAPI_WANT_MIDI_DeleteNote) || !defined(REAPERAPI_MINIMAL)
  3469. REAPERAPI_DEF //==============================================
  3470. // MIDI_DeleteNote
  3471. // Delete a MIDI note.
  3472.  
  3473.   bool (*MIDI_DeleteNote)(MediaItem_Take* take, int noteidx);
  3474. #endif
  3475.  
  3476. #if defined(REAPERAPI_WANT_MIDI_DeleteTextSysexEvt) || !defined(REAPERAPI_MINIMAL)
  3477. REAPERAPI_DEF //==============================================
  3478. // MIDI_DeleteTextSysexEvt
  3479. // Delete a MIDI text or sysex event.
  3480.  
  3481.   bool (*MIDI_DeleteTextSysexEvt)(MediaItem_Take* take, int textsyxevtidx);
  3482. #endif
  3483.  
  3484. #if defined(REAPERAPI_WANT_MIDI_EnumSelCC) || !defined(REAPERAPI_MINIMAL)
  3485. REAPERAPI_DEF //==============================================
  3486. // MIDI_EnumSelCC
  3487. // Returns the index of the next selected MIDI CC event after ccidx (-1 if there are no more selected events).
  3488.  
  3489.   int (*MIDI_EnumSelCC)(MediaItem_Take* take, int ccidx);
  3490. #endif
  3491.  
  3492. #if defined(REAPERAPI_WANT_MIDI_EnumSelEvts) || !defined(REAPERAPI_MINIMAL)
  3493. REAPERAPI_DEF //==============================================
  3494. // MIDI_EnumSelEvts
  3495. // Returns the index of the next selected MIDI event after evtidx (-1 if there are no more selected events).
  3496.  
  3497.   int (*MIDI_EnumSelEvts)(MediaItem_Take* take, int evtidx);
  3498. #endif
  3499.  
  3500. #if defined(REAPERAPI_WANT_MIDI_EnumSelNotes) || !defined(REAPERAPI_MINIMAL)
  3501. REAPERAPI_DEF //==============================================
  3502. // MIDI_EnumSelNotes
  3503. // Returns the index of the next selected MIDI note after noteidx (-1 if there are no more selected events).
  3504.  
  3505.   int (*MIDI_EnumSelNotes)(MediaItem_Take* take, int noteidx);
  3506. #endif
  3507.  
  3508. #if defined(REAPERAPI_WANT_MIDI_EnumSelTextSysexEvts) || !defined(REAPERAPI_MINIMAL)
  3509. REAPERAPI_DEF //==============================================
  3510. // MIDI_EnumSelTextSysexEvts
  3511. // Returns the index of the next selected MIDI text/sysex event after textsyxidx (-1 if there are no more selected events).
  3512.  
  3513.   int (*MIDI_EnumSelTextSysexEvts)(MediaItem_Take* take, int textsyxidx);
  3514. #endif
  3515.  
  3516. #if defined(REAPERAPI_WANT_MIDI_eventlist_Create) || !defined(REAPERAPI_MINIMAL)
  3517. REAPERAPI_DEF //==============================================
  3518. // MIDI_eventlist_Create
  3519. // Create a MIDI_eventlist object. The returned object must be deleted with MIDI_eventlist_destroy().
  3520.  
  3521.   MIDI_eventlist* (*MIDI_eventlist_Create)();
  3522. #endif
  3523.  
  3524. #if defined(REAPERAPI_WANT_MIDI_eventlist_Destroy) || !defined(REAPERAPI_MINIMAL)
  3525. REAPERAPI_DEF //==============================================
  3526. // MIDI_eventlist_Destroy
  3527. // Destroy a MIDI_eventlist object that was created using MIDI_eventlist_Create().
  3528.  
  3529.   void (*MIDI_eventlist_Destroy)(MIDI_eventlist* evtlist);
  3530. #endif
  3531.  
  3532. #if defined(REAPERAPI_WANT_MIDI_GetCC) || !defined(REAPERAPI_MINIMAL)
  3533. REAPERAPI_DEF //==============================================
  3534. // MIDI_GetCC
  3535. // Get MIDI CC event properties.
  3536.  
  3537.   bool (*MIDI_GetCC)(MediaItem_Take* take, int ccidx, bool* selectedOut, bool* mutedOut, double* ppqposOut, int* chanmsgOut, int* chanOut, int* msg2Out, int* msg3Out);
  3538. #endif
  3539.  
  3540. #if defined(REAPERAPI_WANT_MIDI_GetEvt) || !defined(REAPERAPI_MINIMAL)
  3541. REAPERAPI_DEF //==============================================
  3542. // MIDI_GetEvt
  3543. // Get MIDI event properties.
  3544.  
  3545.   bool (*MIDI_GetEvt)(MediaItem_Take* take, int evtidx, bool* selectedOut, bool* mutedOut, double* ppqposOut, char* msg, int* msg_sz);
  3546. #endif
  3547.  
  3548. #if defined(REAPERAPI_WANT_MIDI_GetGrid) || !defined(REAPERAPI_MINIMAL)
  3549. REAPERAPI_DEF //==============================================
  3550. // MIDI_GetGrid
  3551. // 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.
  3552.  
  3553.   double (*MIDI_GetGrid)(MediaItem_Take* take, double* swingOutOptional, double* noteLenOutOptional);
  3554. #endif
  3555.  
  3556. #if defined(REAPERAPI_WANT_MIDI_GetHash) || !defined(REAPERAPI_MINIMAL)
  3557. REAPERAPI_DEF //==============================================
  3558. // MIDI_GetHash
  3559. // 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
  3560.  
  3561.   bool (*MIDI_GetHash)(MediaItem_Take* take, bool notesonly, char* hash, int hash_sz);
  3562. #endif
  3563.  
  3564. #if defined(REAPERAPI_WANT_MIDI_GetNote) || !defined(REAPERAPI_MINIMAL)
  3565. REAPERAPI_DEF //==============================================
  3566. // MIDI_GetNote
  3567. // Get MIDI note properties.
  3568.  
  3569.   bool (*MIDI_GetNote)(MediaItem_Take* take, int noteidx, bool* selectedOut, bool* mutedOut, double* startppqposOut, double* endppqposOut, int* chanOut, int* pitchOut, int* velOut);
  3570. #endif
  3571.  
  3572. #if defined(REAPERAPI_WANT_MIDI_GetPPQPos_EndOfMeasure) || !defined(REAPERAPI_MINIMAL)
  3573. REAPERAPI_DEF //==============================================
  3574. // MIDI_GetPPQPos_EndOfMeasure
  3575. // Returns the MIDI tick (ppq) position corresponding to the end of the measure.
  3576.  
  3577.   double (*MIDI_GetPPQPos_EndOfMeasure)(MediaItem_Take* take, double ppqpos);
  3578. #endif
  3579.  
  3580. #if defined(REAPERAPI_WANT_MIDI_GetPPQPos_StartOfMeasure) || !defined(REAPERAPI_MINIMAL)
  3581. REAPERAPI_DEF //==============================================
  3582. // MIDI_GetPPQPos_StartOfMeasure
  3583. // Returns the MIDI tick (ppq) position corresponding to the start of the measure.
  3584.  
  3585.   double (*MIDI_GetPPQPos_StartOfMeasure)(MediaItem_Take* take, double ppqpos);
  3586. #endif
  3587.  
  3588. #if defined(REAPERAPI_WANT_MIDI_GetPPQPosFromProjQN) || !defined(REAPERAPI_MINIMAL)
  3589. REAPERAPI_DEF //==============================================
  3590. // MIDI_GetPPQPosFromProjQN
  3591. // Returns the MIDI tick (ppq) position corresponding to a specific project time in quarter notes.
  3592.  
  3593.   double (*MIDI_GetPPQPosFromProjQN)(MediaItem_Take* take, double projqn);
  3594. #endif
  3595.  
  3596. #if defined(REAPERAPI_WANT_MIDI_GetPPQPosFromProjTime) || !defined(REAPERAPI_MINIMAL)
  3597. REAPERAPI_DEF //==============================================
  3598. // MIDI_GetPPQPosFromProjTime
  3599. // Returns the MIDI tick (ppq) position corresponding to a specific project time in seconds.
  3600.  
  3601.   double (*MIDI_GetPPQPosFromProjTime)(MediaItem_Take* take, double projtime);
  3602. #endif
  3603.  
  3604. #if defined(REAPERAPI_WANT_MIDI_GetProjQNFromPPQPos) || !defined(REAPERAPI_MINIMAL)
  3605. REAPERAPI_DEF //==============================================
  3606. // MIDI_GetProjQNFromPPQPos
  3607. // Returns the project time in quarter notes corresponding to a specific MIDI tick (ppq) position.
  3608.  
  3609.   double (*MIDI_GetProjQNFromPPQPos)(MediaItem_Take* take, double ppqpos);
  3610. #endif
  3611.  
  3612. #if defined(REAPERAPI_WANT_MIDI_GetProjTimeFromPPQPos) || !defined(REAPERAPI_MINIMAL)
  3613. REAPERAPI_DEF //==============================================
  3614. // MIDI_GetProjTimeFromPPQPos
  3615. // Returns the project time in seconds corresponding to a specific MIDI tick (ppq) position.
  3616.  
  3617.   double (*MIDI_GetProjTimeFromPPQPos)(MediaItem_Take* take, double ppqpos);
  3618. #endif
  3619.  
  3620. #if defined(REAPERAPI_WANT_MIDI_GetScale) || !defined(REAPERAPI_MINIMAL)
  3621. REAPERAPI_DEF //==============================================
  3622. // MIDI_GetScale
  3623. // 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.
  3624.  
  3625.   bool (*MIDI_GetScale)(MediaItem_Take* take, int* rootOut, int* scaleOut, char* name, int name_sz);
  3626. #endif
  3627.  
  3628. #if defined(REAPERAPI_WANT_MIDI_GetTextSysexEvt) || !defined(REAPERAPI_MINIMAL)
  3629. REAPERAPI_DEF //==============================================
  3630. // MIDI_GetTextSysexEvt
  3631. // Get MIDI meta-event properties. Allowable types are -1:sysex (msg should not include bounding F0..F7), 1-7:MIDI text event types.
  3632.  
  3633.   bool (*MIDI_GetTextSysexEvt)(MediaItem_Take* take, int textsyxevtidx, bool* selectedOutOptional, bool* mutedOutOptional, double* ppqposOutOptional, int* typeOutOptional, char* msgOptional, int* msgOptional_sz);
  3634. #endif
  3635.  
  3636. #if defined(REAPERAPI_WANT_MIDI_GetTrackHash) || !defined(REAPERAPI_MINIMAL)
  3637. REAPERAPI_DEF //==============================================
  3638. // MIDI_GetTrackHash
  3639. // 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
  3640.  
  3641.   bool (*MIDI_GetTrackHash)(MediaTrack* track, bool notesonly, char* hash, int hash_sz);
  3642. #endif
  3643.  
  3644. #if defined(REAPERAPI_WANT_MIDI_InsertCC) || !defined(REAPERAPI_MINIMAL)
  3645. REAPERAPI_DEF //==============================================
  3646. // MIDI_InsertCC
  3647. // Insert a new MIDI CC event.
  3648.  
  3649.   bool (*MIDI_InsertCC)(MediaItem_Take* take, bool selected, bool muted, double ppqpos, int chanmsg, int chan, int msg2, int msg3);
  3650. #endif
  3651.  
  3652. #if defined(REAPERAPI_WANT_MIDI_InsertEvt) || !defined(REAPERAPI_MINIMAL)
  3653. REAPERAPI_DEF //==============================================
  3654. // MIDI_InsertEvt
  3655. // Insert a new MIDI event.
  3656.  
  3657.   bool (*MIDI_InsertEvt)(MediaItem_Take* take, bool selected, bool muted, double ppqpos, const char* bytestr, int bytestr_sz);
  3658. #endif
  3659.  
  3660. #if defined(REAPERAPI_WANT_MIDI_InsertNote) || !defined(REAPERAPI_MINIMAL)
  3661. REAPERAPI_DEF //==============================================
  3662. // MIDI_InsertNote
  3663. // Insert a new MIDI note. Set noSort if inserting multiple events, then call MIDI_Sort when done.
  3664.  
  3665.   bool (*MIDI_InsertNote)(MediaItem_Take* take, bool selected, bool muted, double startppqpos, double endppqpos, int chan, int pitch, int vel, const bool* noSortInOptional);
  3666. #endif
  3667.  
  3668. #if defined(REAPERAPI_WANT_MIDI_InsertTextSysexEvt) || !defined(REAPERAPI_MINIMAL)
  3669. REAPERAPI_DEF //==============================================
  3670. // MIDI_InsertTextSysexEvt
  3671. // Insert a new MIDI text or sysex event. Allowable types are -1:sysex (msg should include bounding F0..F7), 1-7:MIDI text event types.
  3672.  
  3673.   bool (*MIDI_InsertTextSysexEvt)(MediaItem_Take* take, bool selected, bool muted, double ppqpos, int type, const char* bytestr, int bytestr_sz);
  3674. #endif
  3675.  
  3676. #if defined(REAPERAPI_WANT_midi_reinit) || !defined(REAPERAPI_MINIMAL)
  3677. REAPERAPI_DEF //==============================================
  3678. // midi_reinit
  3679. // Reset all MIDI devices
  3680.  
  3681.   void (*midi_reinit)();
  3682. #endif
  3683.  
  3684. #if defined(REAPERAPI_WANT_MIDI_SelectAll) || !defined(REAPERAPI_MINIMAL)
  3685. REAPERAPI_DEF //==============================================
  3686. // MIDI_SelectAll
  3687. // Select or deselect all MIDI content.
  3688.  
  3689.   void (*MIDI_SelectAll)(MediaItem_Take* take, bool select);
  3690. #endif
  3691.  
  3692. #if defined(REAPERAPI_WANT_MIDI_SetCC) || !defined(REAPERAPI_MINIMAL)
  3693. REAPERAPI_DEF //==============================================
  3694. // MIDI_SetCC
  3695. // 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.
  3696.  
  3697.   bool (*MIDI_SetCC)(MediaItem_Take* take, int ccidx, const bool* selectedInOptional, const bool* mutedInOptional, const double* ppqposInOptional, const int* chanmsgInOptional, const int* chanInOptional, const int* msg2InOptional, const int* msg3InOptional, const bool* noSortInOptional);
  3698. #endif
  3699.  
  3700. #if defined(REAPERAPI_WANT_MIDI_SetEvt) || !defined(REAPERAPI_MINIMAL)
  3701. REAPERAPI_DEF //==============================================
  3702. // MIDI_SetEvt
  3703. // Set MIDI event properties. Properties passed as NULL will not be set.  set noSort if setting multiple events, then call MIDI_Sort when done.
  3704.  
  3705.   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);
  3706. #endif
  3707.  
  3708. #if defined(REAPERAPI_WANT_MIDI_SetItemExtents) || !defined(REAPERAPI_MINIMAL)
  3709. REAPERAPI_DEF //==============================================
  3710. // MIDI_SetItemExtents
  3711. // Set the start/end positions of a media item that contains a MIDI take.
  3712.  
  3713.   bool (*MIDI_SetItemExtents)(MediaItem* item, double startQN, double endQN);
  3714. #endif
  3715.  
  3716. #if defined(REAPERAPI_WANT_MIDI_SetNote) || !defined(REAPERAPI_MINIMAL)
  3717. REAPERAPI_DEF //==============================================
  3718. // MIDI_SetNote
  3719. // 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.
  3720.  
  3721.   bool (*MIDI_SetNote)(MediaItem_Take* take, int noteidx, const bool* selectedInOptional, const bool* mutedInOptional, const double* startppqposInOptional, const double* endppqposInOptional, const int* chanInOptional, const int* pitchInOptional, const int* velInOptional, const bool* noSortInOptional);
  3722. #endif
  3723.  
  3724. #if defined(REAPERAPI_WANT_MIDI_SetTextSysexEvt) || !defined(REAPERAPI_MINIMAL)
  3725. REAPERAPI_DEF //==============================================
  3726. // MIDI_SetTextSysexEvt
  3727. // 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.
  3728.  
  3729.   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);
  3730. #endif
  3731.  
  3732. #if defined(REAPERAPI_WANT_MIDI_Sort) || !defined(REAPERAPI_MINIMAL)
  3733. REAPERAPI_DEF //==============================================
  3734. // MIDI_Sort
  3735. // Sort MIDI events after multiple calls to MIDI_SetNote, MIDI_SetCC, etc.
  3736.  
  3737.   void (*MIDI_Sort)(MediaItem_Take* take);
  3738. #endif
  3739.  
  3740. #if defined(REAPERAPI_WANT_MIDIEditor_GetActive) || !defined(REAPERAPI_MINIMAL)
  3741. REAPERAPI_DEF //==============================================
  3742. // MIDIEditor_GetActive
  3743. // get a pointer to the focused MIDI editor window
  3744. // see MIDIEditor_GetMode, MIDIEditor_OnCommand
  3745.  
  3746.   HWND (*MIDIEditor_GetActive)();
  3747. #endif
  3748.  
  3749. #if defined(REAPERAPI_WANT_MIDIEditor_GetMode) || !defined(REAPERAPI_MINIMAL)
  3750. REAPERAPI_DEF //==============================================
  3751. // MIDIEditor_GetMode
  3752. // get the mode of a MIDI editor (0=piano roll, 1=event list, -1=invalid editor)
  3753. // see MIDIEditor_GetActive, MIDIEditor_OnCommand
  3754.  
  3755.   int (*MIDIEditor_GetMode)(HWND midieditor);
  3756. #endif
  3757.  
  3758. #if defined(REAPERAPI_WANT_MIDIEditor_GetSetting_int) || !defined(REAPERAPI_MINIMAL)
  3759. REAPERAPI_DEF //==============================================
  3760. // MIDIEditor_GetSetting_int
  3761. // Get settings from a MIDI editor. setting_desc can be:
  3762. // snap_enabled: returns 0 or 1
  3763. // active_note_row: returns 0-127
  3764. // last_clicked_cc_lane: returns 0-127=CC, 0x100|(0-31)=14-bit CC, 0x200=velocity, 0x201=pitch, 0x202=program, 0x203=channel pressure, 0x204=bank/program select, 0x205=text, 0x206=sysex, 0x207=off velocity
  3765. // default_note_vel: returns 0-127
  3766. // default_note_chan: returns 0-15
  3767. // default_note_len: returns default length in MIDI ticks
  3768. // scale_enabled: returns 0-1
  3769. // scale_root: returns 0-12 (0=C)
  3770. // if setting_desc is unsupported, the function returns -1.
  3771. // See MIDIEditor_GetActive, MIDIEditor_GetSetting_str
  3772.  
  3773.   int (*MIDIEditor_GetSetting_int)(HWND midieditor, const char* setting_desc);
  3774. #endif
  3775.  
  3776. #if defined(REAPERAPI_WANT_MIDIEditor_GetSetting_str) || !defined(REAPERAPI_MINIMAL)
  3777. REAPERAPI_DEF //==============================================
  3778. // MIDIEditor_GetSetting_str
  3779. // Get settings from a MIDI editor. setting_desc can be:
  3780. // last_clicked_cc_lane: returns text description ("velocity", "pitch", etc)
  3781. // scale: returns the scale record, for example "102034050607" for a major scale
  3782. // if setting_desc is unsupported, the function returns false.
  3783. // See MIDIEditor_GetActive, MIDIEditor_GetSetting_int
  3784.  
  3785.   bool (*MIDIEditor_GetSetting_str)(HWND midieditor, const char* setting_desc, char* buf, int buf_sz);
  3786. #endif
  3787.  
  3788. #if defined(REAPERAPI_WANT_MIDIEditor_GetTake) || !defined(REAPERAPI_MINIMAL)
  3789. REAPERAPI_DEF //==============================================
  3790. // MIDIEditor_GetTake
  3791. // get the take that is currently being edited in this MIDI editor
  3792.  
  3793.   MediaItem_Take* (*MIDIEditor_GetTake)(HWND midieditor);
  3794. #endif
  3795.  
  3796. #if defined(REAPERAPI_WANT_MIDIEditor_LastFocused_OnCommand) || !defined(REAPERAPI_MINIMAL)
  3797. REAPERAPI_DEF //==============================================
  3798. // MIDIEditor_LastFocused_OnCommand
  3799. // Send an action command to the last focused MIDI editor. Returns false if there is no MIDI editor open, or if the view mode (piano roll or event list) does not match the input.
  3800. // see MIDIEditor_OnCommand
  3801.  
  3802.   bool (*MIDIEditor_LastFocused_OnCommand)(int command_id, bool islistviewcommand);
  3803. #endif
  3804.  
  3805. #if defined(REAPERAPI_WANT_MIDIEditor_OnCommand) || !defined(REAPERAPI_MINIMAL)
  3806. REAPERAPI_DEF //==============================================
  3807. // MIDIEditor_OnCommand
  3808. // Send an action command to a MIDI editor. Returns false if the supplied MIDI editor pointer is not valid (not an open MIDI editor).
  3809. // see MIDIEditor_GetActive, MIDIEditor_LastFocused_OnCommand
  3810.  
  3811.   bool (*MIDIEditor_OnCommand)(HWND midieditor, int command_id);
  3812. #endif
  3813.  
  3814. #if defined(REAPERAPI_WANT_mkpanstr) || !defined(REAPERAPI_MINIMAL)
  3815. REAPERAPI_DEF //==============================================
  3816. // mkpanstr
  3817.  
  3818.   void (*mkpanstr)(char* strNeed64, double pan);
  3819. #endif
  3820.  
  3821. #if defined(REAPERAPI_WANT_mkvolpanstr) || !defined(REAPERAPI_MINIMAL)
  3822. REAPERAPI_DEF //==============================================
  3823. // mkvolpanstr
  3824.  
  3825.   void (*mkvolpanstr)(char* strNeed64, double vol, double pan);
  3826. #endif
  3827.  
  3828. #if defined(REAPERAPI_WANT_mkvolstr) || !defined(REAPERAPI_MINIMAL)
  3829. REAPERAPI_DEF //==============================================
  3830. // mkvolstr
  3831.  
  3832.   void (*mkvolstr)(char* strNeed64, double vol);
  3833. #endif
  3834.  
  3835. #if defined(REAPERAPI_WANT_MoveEditCursor) || !defined(REAPERAPI_MINIMAL)
  3836. REAPERAPI_DEF //==============================================
  3837. // MoveEditCursor
  3838.  
  3839.   void (*MoveEditCursor)(double adjamt, bool dosel);
  3840. #endif
  3841.  
  3842. #if defined(REAPERAPI_WANT_MoveMediaItemToTrack) || !defined(REAPERAPI_MINIMAL)
  3843. REAPERAPI_DEF //==============================================
  3844. // MoveMediaItemToTrack
  3845. // returns TRUE if move succeeded
  3846.  
  3847.   bool (*MoveMediaItemToTrack)(MediaItem* item, MediaTrack* desttr);
  3848. #endif
  3849.  
  3850. #if defined(REAPERAPI_WANT_MuteAllTracks) || !defined(REAPERAPI_MINIMAL)
  3851. REAPERAPI_DEF //==============================================
  3852. // MuteAllTracks
  3853.  
  3854.   void (*MuteAllTracks)(bool mute);
  3855. #endif
  3856.  
  3857. #if defined(REAPERAPI_WANT_my_getViewport) || !defined(REAPERAPI_MINIMAL)
  3858. REAPERAPI_DEF //==============================================
  3859. // my_getViewport
  3860.  
  3861.   void (*my_getViewport)(RECT* r, const RECT* sr, bool wantWorkArea);
  3862. #endif
  3863.  
  3864. #if defined(REAPERAPI_WANT_NamedCommandLookup) || !defined(REAPERAPI_MINIMAL)
  3865. REAPERAPI_DEF //==============================================
  3866. // NamedCommandLookup
  3867. // Get the command ID number for named command that was registered by an extension such as "_SWS_ABOUT" or "_113088d11ae641c193a2b7ede3041ad5" for a ReaScript or a custom action.
  3868.  
  3869.   int (*NamedCommandLookup)(const char* command_name);
  3870. #endif
  3871.  
  3872. #if defined(REAPERAPI_WANT_OnPauseButton) || !defined(REAPERAPI_MINIMAL)
  3873. REAPERAPI_DEF //==============================================
  3874. // OnPauseButton
  3875. // direct way to simulate pause button hit
  3876.  
  3877.   void (*OnPauseButton)();
  3878. #endif
  3879.  
  3880. #if defined(REAPERAPI_WANT_OnPauseButtonEx) || !defined(REAPERAPI_MINIMAL)
  3881. REAPERAPI_DEF //==============================================
  3882. // OnPauseButtonEx
  3883. // direct way to simulate pause button hit
  3884.  
  3885.   void (*OnPauseButtonEx)(ReaProject* proj);
  3886. #endif
  3887.  
  3888. #if defined(REAPERAPI_WANT_OnPlayButton) || !defined(REAPERAPI_MINIMAL)
  3889. REAPERAPI_DEF //==============================================
  3890. // OnPlayButton
  3891. // direct way to simulate play button hit
  3892.  
  3893.   void (*OnPlayButton)();
  3894. #endif
  3895.  
  3896. #if defined(REAPERAPI_WANT_OnPlayButtonEx) || !defined(REAPERAPI_MINIMAL)
  3897. REAPERAPI_DEF //==============================================
  3898. // OnPlayButtonEx
  3899. // direct way to simulate play button hit
  3900.  
  3901.   void (*OnPlayButtonEx)(ReaProject* proj);
  3902. #endif
  3903.  
  3904. #if defined(REAPERAPI_WANT_OnStopButton) || !defined(REAPERAPI_MINIMAL)
  3905. REAPERAPI_DEF //==============================================
  3906. // OnStopButton
  3907. // direct way to simulate stop button hit
  3908.  
  3909.   void (*OnStopButton)();
  3910. #endif
  3911.  
  3912. #if defined(REAPERAPI_WANT_OnStopButtonEx) || !defined(REAPERAPI_MINIMAL)
  3913. REAPERAPI_DEF //==============================================
  3914. // OnStopButtonEx
  3915. // direct way to simulate stop button hit
  3916.  
  3917.   void (*OnStopButtonEx)(ReaProject* proj);
  3918. #endif
  3919.  
  3920. #if defined(REAPERAPI_WANT_OpenColorThemeFile) || !defined(REAPERAPI_MINIMAL)
  3921. REAPERAPI_DEF //==============================================
  3922. // OpenColorThemeFile
  3923.  
  3924.   bool (*OpenColorThemeFile)(const char* fn);
  3925. #endif
  3926.  
  3927. #if defined(REAPERAPI_WANT_OpenMediaExplorer) || !defined(REAPERAPI_MINIMAL)
  3928. REAPERAPI_DEF //==============================================
  3929. // OpenMediaExplorer
  3930. // Opens mediafn in the Media Explorer, play=true will play the file immediately (or toggle playback if mediafn was already open), =false will just select it.
  3931.  
  3932.   HWND (*OpenMediaExplorer)(const char* mediafn, bool play);
  3933. #endif
  3934.  
  3935. #if defined(REAPERAPI_WANT_OscLocalMessageToHost) || !defined(REAPERAPI_MINIMAL)
  3936. REAPERAPI_DEF //==============================================
  3937. // OscLocalMessageToHost
  3938. // Send an OSC message directly to REAPER. The value argument may be NULL. The message will be matched against the default OSC patterns. Only supported if control surface support was enabled when installing REAPER.
  3939.  
  3940.   void (*OscLocalMessageToHost)(const char* message, const double* valueInOptional);
  3941. #endif
  3942.  
  3943. #if defined(REAPERAPI_WANT_parse_timestr) || !defined(REAPERAPI_MINIMAL)
  3944. REAPERAPI_DEF //==============================================
  3945. // parse_timestr
  3946. // time formatting mode overrides: -1=proj default.
  3947. // 0=time
  3948. // 1=measures.beats + time
  3949. // 2=measures.beats
  3950. // 3=seconds
  3951. // 4=samples
  3952. // 5=h:m:s:f
  3953.  
  3954.   double (*parse_timestr)(const char* buf);
  3955. #endif
  3956.  
  3957. #if defined(REAPERAPI_WANT_parse_timestr_len) || !defined(REAPERAPI_MINIMAL)
  3958. REAPERAPI_DEF //==============================================
  3959. // parse_timestr_len
  3960. // time formatting mode overrides: -1=proj default.
  3961. // 0=time
  3962. // 1=measures.beats + time
  3963. // 2=measures.beats
  3964. // 3=seconds
  3965. // 4=samples
  3966. // 5=h:m:s:f
  3967.  
  3968.   double (*parse_timestr_len)(const char* buf, double offset, int modeoverride);
  3969. #endif
  3970.  
  3971. #if defined(REAPERAPI_WANT_parse_timestr_pos) || !defined(REAPERAPI_MINIMAL)
  3972. REAPERAPI_DEF //==============================================
  3973. // parse_timestr_pos
  3974. // parses time string,modeoverride see above
  3975.  
  3976.   double (*parse_timestr_pos)(const char* buf, int modeoverride);
  3977. #endif
  3978.  
  3979. #if defined(REAPERAPI_WANT_parsepanstr) || !defined(REAPERAPI_MINIMAL)
  3980. REAPERAPI_DEF //==============================================
  3981. // parsepanstr
  3982.  
  3983.   double (*parsepanstr)(const char* str);
  3984. #endif
  3985.  
  3986. #if defined(REAPERAPI_WANT_PCM_Sink_Create) || !defined(REAPERAPI_MINIMAL)
  3987. REAPERAPI_DEF //==============================================
  3988. // PCM_Sink_Create
  3989.  
  3990.   PCM_sink* (*PCM_Sink_Create)(const char* filename, const char* cfg, int cfg_sz, int nch, int srate, bool buildpeaks);
  3991. #endif
  3992.  
  3993. #if defined(REAPERAPI_WANT_PCM_Sink_CreateEx) || !defined(REAPERAPI_MINIMAL)
  3994. REAPERAPI_DEF //==============================================
  3995. // PCM_Sink_CreateEx
  3996.  
  3997.   PCM_sink* (*PCM_Sink_CreateEx)(ReaProject* proj, const char* filename, const char* cfg, int cfg_sz, int nch, int srate, bool buildpeaks);
  3998. #endif
  3999.  
  4000. #if defined(REAPERAPI_WANT_PCM_Sink_CreateMIDIFile) || !defined(REAPERAPI_MINIMAL)
  4001. REAPERAPI_DEF //==============================================
  4002. // PCM_Sink_CreateMIDIFile
  4003.  
  4004.   PCM_sink* (*PCM_Sink_CreateMIDIFile)(const char* filename, const char* cfg, int cfg_sz, double bpm, int div);
  4005. #endif
  4006.  
  4007. #if defined(REAPERAPI_WANT_PCM_Sink_CreateMIDIFileEx) || !defined(REAPERAPI_MINIMAL)
  4008. REAPERAPI_DEF //==============================================
  4009. // PCM_Sink_CreateMIDIFileEx
  4010.  
  4011.   PCM_sink* (*PCM_Sink_CreateMIDIFileEx)(ReaProject* proj, const char* filename, const char* cfg, int cfg_sz, double bpm, int div);
  4012. #endif
  4013.  
  4014. #if defined(REAPERAPI_WANT_PCM_Sink_Enum) || !defined(REAPERAPI_MINIMAL)
  4015. REAPERAPI_DEF //==============================================
  4016. // PCM_Sink_Enum
  4017.  
  4018.   unsigned int (*PCM_Sink_Enum)(int idx, const char** descstrOut);
  4019. #endif
  4020.  
  4021. #if defined(REAPERAPI_WANT_PCM_Sink_GetExtension) || !defined(REAPERAPI_MINIMAL)
  4022. REAPERAPI_DEF //==============================================
  4023. // PCM_Sink_GetExtension
  4024.  
  4025.   const char* (*PCM_Sink_GetExtension)(const char* data, int data_sz);
  4026. #endif
  4027.  
  4028. #if defined(REAPERAPI_WANT_PCM_Sink_ShowConfig) || !defined(REAPERAPI_MINIMAL)
  4029. REAPERAPI_DEF //==============================================
  4030. // PCM_Sink_ShowConfig
  4031.  
  4032.   HWND (*PCM_Sink_ShowConfig)(const char* cfg, int cfg_sz, HWND hwndParent);
  4033. #endif
  4034.  
  4035. #if defined(REAPERAPI_WANT_PCM_Source_CreateFromFile) || !defined(REAPERAPI_MINIMAL)
  4036. REAPERAPI_DEF //==============================================
  4037. // PCM_Source_CreateFromFile
  4038.  
  4039.   PCM_source* (*PCM_Source_CreateFromFile)(const char* filename);
  4040. #endif
  4041.  
  4042. #if defined(REAPERAPI_WANT_PCM_Source_CreateFromFileEx) || !defined(REAPERAPI_MINIMAL)
  4043. REAPERAPI_DEF //==============================================
  4044. // PCM_Source_CreateFromFileEx
  4045.  
  4046.   PCM_source* (*PCM_Source_CreateFromFileEx)(const char* filename, bool forcenoMidiImp);
  4047. #endif
  4048.  
  4049. #if defined(REAPERAPI_WANT_PCM_Source_CreateFromSimple) || !defined(REAPERAPI_MINIMAL)
  4050. REAPERAPI_DEF //==============================================
  4051. // PCM_Source_CreateFromSimple
  4052. // Creates a PCM_source from a ISimpleMediaDecoder
  4053. // (if fn is non-null, it will open the file in dec)
  4054.  
  4055.   PCM_source* (*PCM_Source_CreateFromSimple)(ISimpleMediaDecoder* dec, const char* fn);
  4056. #endif
  4057.  
  4058. #if defined(REAPERAPI_WANT_PCM_Source_CreateFromType) || !defined(REAPERAPI_MINIMAL)
  4059. REAPERAPI_DEF //==============================================
  4060. // PCM_Source_CreateFromType
  4061.  
  4062.   PCM_source* (*PCM_Source_CreateFromType)(const char* sourcetype);
  4063. #endif
  4064.  
  4065. #if defined(REAPERAPI_WANT_PCM_Source_Destroy) || !defined(REAPERAPI_MINIMAL)
  4066. REAPERAPI_DEF //==============================================
  4067. // PCM_Source_Destroy
  4068. // Deletes a PCM_source -- be sure that you remove any project reference before deleting a source
  4069.  
  4070.   void (*PCM_Source_Destroy)(PCM_source* src);
  4071. #endif
  4072.  
  4073. #if defined(REAPERAPI_WANT_PCM_Source_GetSectionInfo) || !defined(REAPERAPI_MINIMAL)
  4074. REAPERAPI_DEF //==============================================
  4075. // PCM_Source_GetSectionInfo
  4076. // If a section/reverse block, retrieves offset/len/reverse. return true if success
  4077.  
  4078.   bool (*PCM_Source_GetSectionInfo)(PCM_source* src, double* offsOut, double* lenOut, bool* revOut);
  4079. #endif
  4080.  
  4081. #if defined(REAPERAPI_WANT_PeakBuild_Create) || !defined(REAPERAPI_MINIMAL)
  4082. REAPERAPI_DEF //==============================================
  4083. // PeakBuild_Create
  4084.  
  4085.   REAPER_PeakBuild_Interface* (*PeakBuild_Create)(PCM_source* src, const char* fn, int srate, int nch);
  4086. #endif
  4087.  
  4088. #if defined(REAPERAPI_WANT_PeakGet_Create) || !defined(REAPERAPI_MINIMAL)
  4089. REAPERAPI_DEF //==============================================
  4090. // PeakGet_Create
  4091.  
  4092.   REAPER_PeakGet_Interface* (*PeakGet_Create)(const char* fn, int srate, int nch);
  4093. #endif
  4094.  
  4095. #if defined(REAPERAPI_WANT_PlayPreview) || !defined(REAPERAPI_MINIMAL)
  4096. REAPERAPI_DEF //==============================================
  4097. // PlayPreview
  4098. // return nonzero on success
  4099.  
  4100.   int (*PlayPreview)(preview_register_t* preview);
  4101. #endif
  4102.  
  4103. #if defined(REAPERAPI_WANT_PlayPreviewEx) || !defined(REAPERAPI_MINIMAL)
  4104. REAPERAPI_DEF //==============================================
  4105. // PlayPreviewEx
  4106. // return nonzero on success
  4107.  
  4108.   int (*PlayPreviewEx)(preview_register_t* preview, int bufflags, double MSI);
  4109. #endif
  4110.  
  4111. #if defined(REAPERAPI_WANT_PlayTrackPreview) || !defined(REAPERAPI_MINIMAL)
  4112. REAPERAPI_DEF //==============================================
  4113. // PlayTrackPreview
  4114. // return nonzero on success,in these,m_out_chan is a track index (0-n)
  4115.  
  4116.   int (*PlayTrackPreview)(preview_register_t* preview);
  4117. #endif
  4118.  
  4119. #if defined(REAPERAPI_WANT_PlayTrackPreview2) || !defined(REAPERAPI_MINIMAL)
  4120. REAPERAPI_DEF //==============================================
  4121. // PlayTrackPreview2
  4122. // return nonzero on success,in these,m_out_chan is a track index (0-n)
  4123.  
  4124.   int (*PlayTrackPreview2)(ReaProject* proj, preview_register_t* preview);
  4125. #endif
  4126.  
  4127. #if defined(REAPERAPI_WANT_PlayTrackPreview2Ex) || !defined(REAPERAPI_MINIMAL)
  4128. REAPERAPI_DEF //==============================================
  4129. // PlayTrackPreview2Ex
  4130. // return nonzero on success,in these,m_out_chan is a track index (0-n)
  4131.  
  4132.   int (*PlayTrackPreview2Ex)(ReaProject* proj, preview_register_t* preview, int flags, double msi);
  4133. #endif
  4134.  
  4135. #if defined(REAPERAPI_WANT_plugin_getapi) || !defined(REAPERAPI_MINIMAL)
  4136. REAPERAPI_DEF //==============================================
  4137. // plugin_getapi
  4138.  
  4139.   void* (*plugin_getapi)(const char* name);
  4140. #endif
  4141.  
  4142. #if defined(REAPERAPI_WANT_plugin_getFilterList) || !defined(REAPERAPI_MINIMAL)
  4143. REAPERAPI_DEF //==============================================
  4144. // plugin_getFilterList
  4145.  
  4146.   const char* (*plugin_getFilterList)();
  4147. #endif
  4148.  
  4149. #if defined(REAPERAPI_WANT_plugin_getImportableProjectFilterList) || !defined(REAPERAPI_MINIMAL)
  4150. REAPERAPI_DEF //==============================================
  4151. // plugin_getImportableProjectFilterList
  4152.  
  4153.   const char* (*plugin_getImportableProjectFilterList)();
  4154. #endif
  4155.  
  4156. #if defined(REAPERAPI_WANT_plugin_register) || !defined(REAPERAPI_MINIMAL)
  4157. REAPERAPI_DEF //==============================================
  4158. // plugin_register
  4159. // like rec->Register
  4160. //
  4161. // if you have a function called myfunction(..) that you want to expose to other extensions or plug-ins,
  4162. // use register("API_myfunction",funcaddress), and "-API_myfunction" to remove.
  4163. // Other extensions then use GetFunc("myfunction") to get the function pointer.
  4164. // REAPER will also export the function address to ReaScript, so your extension could supply
  4165. // a Python module that provides a wrapper called RPR_myfunction(..).
  4166. // register("APIdef_myfunction",defstring) will include your function declaration and help
  4167. // in the auto-generated REAPER API header and ReaScript documentation.
  4168. // defstring is four null-separated fields: return type, argument types, argument names, and help.
  4169. // Example: double myfunction(char* str, int flag) would have
  4170. // defstring="double\0char*,int\0str,flag\0help text for myfunction"
  4171. //
  4172. // another thing you can register is "hookcommand", which you pass a callback:
  4173. //  NON_API: bool runCommand(int command, int flag);
  4174. //           register("hookcommand",runCommand);
  4175. // which returns TRUE to eat (process) the command.
  4176. // flag is usually 0 but can sometimes have useful info depending on the message.
  4177. // note: it's OK to call Main_OnCommand() within your runCommand, however you MUST check for recursion if doing so!
  4178. // in fact, any use of this hook should benefit from a simple reentrancy test...
  4179. //
  4180. // to get notified when an action of the main section is performed,
  4181. // you can register "hookpostcommand", which you pass a callback:
  4182. //  NON_API: void postCommand(int command, int flag);
  4183. //           register("hookpostcommand",postCommand);
  4184. //
  4185. // you can also register "hookcommand2", which you pass a callback:
  4186. //  NON_API: bool onAction(KbdSectionInfo *sec, int command, int val, int valhw, int relmode, HWND hwnd);
  4187. //           register("hookcommand2",onAction);
  4188. // which returns TRUE to eat (process) the command.
  4189. // val/valhw are used for actions learned with MIDI/OSC.
  4190. // val = [0..127] and valhw = -1 for MIDI CC,
  4191. // valhw >=0 for MIDI pitch or OSC with value = (valhw|val<<7)/16383.0,
  4192. // relmode absolute(0) or 1/2/3 for relative adjust modes
  4193. //
  4194. // you can also register command IDs for actions,
  4195. // register with "command_id", parameter is a unique string with only A-Z, 0-9,
  4196. // returns command ID (or 0 if not supported/out of actions)
  4197. //
  4198. // register("command_id_lookup", unique_string) will look up the integer ID of the named action
  4199. // without registering the string if it doesn't already exist.
  4200.  
  4201.   int (*plugin_register)(const char* name, void* infostruct);
  4202. #endif
  4203.  
  4204. #if defined(REAPERAPI_WANT_PluginWantsAlwaysRunFx) || !defined(REAPERAPI_MINIMAL)
  4205. REAPERAPI_DEF //==============================================
  4206. // PluginWantsAlwaysRunFx
  4207.  
  4208.   void (*PluginWantsAlwaysRunFx)(int amt);
  4209. #endif
  4210.  
  4211. #if defined(REAPERAPI_WANT_PreventUIRefresh) || !defined(REAPERAPI_MINIMAL)
  4212. REAPERAPI_DEF //==============================================
  4213. // PreventUIRefresh
  4214. // adds prevent_count to the UI refresh prevention state; always add then remove the same amount, or major disfunction will occur
  4215.  
  4216.   void (*PreventUIRefresh)(int prevent_count);
  4217. #endif
  4218.  
  4219. #if defined(REAPERAPI_WANT_projectconfig_var_addr) || !defined(REAPERAPI_MINIMAL)
  4220. REAPERAPI_DEF //==============================================
  4221. // projectconfig_var_addr
  4222.  
  4223.   void* (*projectconfig_var_addr)(ReaProject* proj, int idx);
  4224. #endif
  4225.  
  4226. #if defined(REAPERAPI_WANT_projectconfig_var_getoffs) || !defined(REAPERAPI_MINIMAL)
  4227. REAPERAPI_DEF //==============================================
  4228. // projectconfig_var_getoffs
  4229. // returns offset to pass to projectconfig_var_addr() to get project-config var of name. szout gets size of object.
  4230.  
  4231.   int (*projectconfig_var_getoffs)(const char* name, int* szOut);
  4232. #endif
  4233.  
  4234. #if defined(REAPERAPI_WANT_ReaperGetPitchShiftAPI) || !defined(REAPERAPI_MINIMAL)
  4235. REAPERAPI_DEF //==============================================
  4236. // ReaperGetPitchShiftAPI
  4237. // version must be REAPER_PITCHSHIFT_API_VER
  4238.  
  4239.   IReaperPitchShift* (*ReaperGetPitchShiftAPI)(int version);
  4240. #endif
  4241.  
  4242. #if defined(REAPERAPI_WANT_ReaScriptError) || !defined(REAPERAPI_MINIMAL)
  4243. REAPERAPI_DEF //==============================================
  4244. // ReaScriptError
  4245. // Causes REAPER to display the error message after the current ReaScript finishes.
  4246.  
  4247.   void (*ReaScriptError)(const char* errmsg);
  4248. #endif
  4249.  
  4250. #if defined(REAPERAPI_WANT_RecursiveCreateDirectory) || !defined(REAPERAPI_MINIMAL)
  4251. REAPERAPI_DEF //==============================================
  4252. // RecursiveCreateDirectory
  4253.  
  4254.   int (*RecursiveCreateDirectory)(const char* path, size_t ignored);
  4255. #endif
  4256.  
  4257. #if defined(REAPERAPI_WANT_RefreshToolbar) || !defined(REAPERAPI_MINIMAL)
  4258. REAPERAPI_DEF //==============================================
  4259. // RefreshToolbar
  4260. // See RefreshToolbar2.
  4261.  
  4262.   void (*RefreshToolbar)(int command_id);
  4263. #endif
  4264.  
  4265. #if defined(REAPERAPI_WANT_RefreshToolbar2) || !defined(REAPERAPI_MINIMAL)
  4266. REAPERAPI_DEF //==============================================
  4267. // RefreshToolbar2
  4268. // Refresh the toolbar button states of a toggle action.
  4269.  
  4270.   void (*RefreshToolbar2)(int section_id, int command_id);
  4271. #endif
  4272.  
  4273. #if defined(REAPERAPI_WANT_relative_fn) || !defined(REAPERAPI_MINIMAL)
  4274. REAPERAPI_DEF //==============================================
  4275. // relative_fn
  4276.  
  4277.   void (*relative_fn)(const char* in, char* out, int out_sz);
  4278. #endif
  4279.  
  4280. #if defined(REAPERAPI_WANT_RenderFileSection) || !defined(REAPERAPI_MINIMAL)
  4281. REAPERAPI_DEF //==============================================
  4282. // RenderFileSection
  4283. // Not available while playing back.
  4284.  
  4285.   bool (*RenderFileSection)(const char* source_filename, const char* target_filename, double start_percent, double end_percent, double playrate);
  4286. #endif
  4287.  
  4288. #if defined(REAPERAPI_WANT_Resample_EnumModes) || !defined(REAPERAPI_MINIMAL)
  4289. REAPERAPI_DEF //==============================================
  4290. // Resample_EnumModes
  4291.  
  4292.   const char* (*Resample_EnumModes)(int mode);
  4293. #endif
  4294.  
  4295. #if defined(REAPERAPI_WANT_Resampler_Create) || !defined(REAPERAPI_MINIMAL)
  4296. REAPERAPI_DEF //==============================================
  4297. // Resampler_Create
  4298.  
  4299.   REAPER_Resample_Interface* (*Resampler_Create)();
  4300. #endif
  4301.  
  4302. #if defined(REAPERAPI_WANT_resolve_fn) || !defined(REAPERAPI_MINIMAL)
  4303. REAPERAPI_DEF //==============================================
  4304. // resolve_fn
  4305.  
  4306.   void (*resolve_fn)(const char* in, char* out, int out_sz);
  4307. #endif
  4308.  
  4309. #if defined(REAPERAPI_WANT_resolve_fn2) || !defined(REAPERAPI_MINIMAL)
  4310. REAPERAPI_DEF //==============================================
  4311. // resolve_fn2
  4312.  
  4313.   void (*resolve_fn2)(const char* in, char* out, int out_sz, const char* checkSubDirOptional);
  4314. #endif
  4315.  
  4316. #if defined(REAPERAPI_WANT_ReverseNamedCommandLookup) || !defined(REAPERAPI_MINIMAL)
  4317. REAPERAPI_DEF //==============================================
  4318. // ReverseNamedCommandLookup
  4319. // Get the named command for the given command ID. The returned string will not start with '_' (e.g. it will return "SWS_ABOUT"), it will be NULL if command_id is a native action.
  4320.  
  4321.   const char* (*ReverseNamedCommandLookup)(int command_id);
  4322. #endif
  4323.  
  4324. #if defined(REAPERAPI_WANT_ScaleFromEnvelopeMode) || !defined(REAPERAPI_MINIMAL)
  4325. REAPERAPI_DEF //==============================================
  4326. // ScaleFromEnvelopeMode
  4327. // See GetEnvelopeScalingMode.
  4328.  
  4329.   double (*ScaleFromEnvelopeMode)(int scaling_mode, double val);
  4330. #endif
  4331.  
  4332. #if defined(REAPERAPI_WANT_ScaleToEnvelopeMode) || !defined(REAPERAPI_MINIMAL)
  4333. REAPERAPI_DEF //==============================================
  4334. // ScaleToEnvelopeMode
  4335. // See GetEnvelopeScalingMode.
  4336.  
  4337.   double (*ScaleToEnvelopeMode)(int scaling_mode, double val);
  4338. #endif
  4339.  
  4340. #if defined(REAPERAPI_WANT_screenset_register) || !defined(REAPERAPI_MINIMAL)
  4341. REAPERAPI_DEF //==============================================
  4342. // screenset_register
  4343.  
  4344.   void (*screenset_register)(char* id, void* callbackFunc, void* param);
  4345. #endif
  4346.  
  4347. #if defined(REAPERAPI_WANT_screenset_registerNew) || !defined(REAPERAPI_MINIMAL)
  4348. REAPERAPI_DEF //==============================================
  4349. // screenset_registerNew
  4350.  
  4351.   void (*screenset_registerNew)(char* id, screensetNewCallbackFunc callbackFunc, void* param);
  4352. #endif
  4353.  
  4354. #if defined(REAPERAPI_WANT_screenset_unregister) || !defined(REAPERAPI_MINIMAL)
  4355. REAPERAPI_DEF //==============================================
  4356. // screenset_unregister
  4357.  
  4358.   void (*screenset_unregister)(char* id);
  4359. #endif
  4360.  
  4361. #if defined(REAPERAPI_WANT_screenset_unregisterByParam) || !defined(REAPERAPI_MINIMAL)
  4362. REAPERAPI_DEF //==============================================
  4363. // screenset_unregisterByParam
  4364.  
  4365.   void (*screenset_unregisterByParam)(void* param);
  4366. #endif
  4367.  
  4368. #if defined(REAPERAPI_WANT_screenset_updateLastFocus) || !defined(REAPERAPI_MINIMAL)
  4369. REAPERAPI_DEF //==============================================
  4370. // screenset_updateLastFocus
  4371.  
  4372.   void (*screenset_updateLastFocus)(HWND prevWin);
  4373. #endif
  4374.  
  4375. #if defined(REAPERAPI_WANT_SectionFromUniqueID) || !defined(REAPERAPI_MINIMAL)
  4376. REAPERAPI_DEF //==============================================
  4377. // SectionFromUniqueID
  4378.  
  4379.   KbdSectionInfo* (*SectionFromUniqueID)(int uniqueID);
  4380. #endif
  4381.  
  4382. #if defined(REAPERAPI_WANT_SelectAllMediaItems) || !defined(REAPERAPI_MINIMAL)
  4383. REAPERAPI_DEF //==============================================
  4384. // SelectAllMediaItems
  4385.  
  4386.   void (*SelectAllMediaItems)(ReaProject* proj, bool selected);
  4387. #endif
  4388.  
  4389. #if defined(REAPERAPI_WANT_SelectProjectInstance) || !defined(REAPERAPI_MINIMAL)
  4390. REAPERAPI_DEF //==============================================
  4391. // SelectProjectInstance
  4392.  
  4393.   void (*SelectProjectInstance)(ReaProject* proj);
  4394. #endif
  4395.  
  4396. #if defined(REAPERAPI_WANT_SendLocalOscMessage) || !defined(REAPERAPI_MINIMAL)
  4397. REAPERAPI_DEF //==============================================
  4398. // SendLocalOscMessage
  4399. // Send an OSC message to REAPER. See CreateLocalOscHandler, DestroyLocalOscHandler.
  4400.  
  4401.   void (*SendLocalOscMessage)(void* local_osc_handler, const char* msg, int msglen);
  4402. #endif
  4403.  
  4404. #if defined(REAPERAPI_WANT_SetActiveTake) || !defined(REAPERAPI_MINIMAL)
  4405. REAPERAPI_DEF //==============================================
  4406. // SetActiveTake
  4407. // set this take active in this media item
  4408.  
  4409.   void (*SetActiveTake)(MediaItem_Take* take);
  4410. #endif
  4411.  
  4412. #if defined(REAPERAPI_WANT_SetAutomationMode) || !defined(REAPERAPI_MINIMAL)
  4413. REAPERAPI_DEF //==============================================
  4414. // SetAutomationMode
  4415. // sets all or selected tracks to mode.
  4416.  
  4417.   void (*SetAutomationMode)(int mode, bool onlySel);
  4418. #endif
  4419.  
  4420. #if defined(REAPERAPI_WANT_SetCurrentBPM) || !defined(REAPERAPI_MINIMAL)
  4421. REAPERAPI_DEF //==============================================
  4422. // SetCurrentBPM
  4423. // set current BPM in project, set wantUndo=true to add undo point
  4424.  
  4425.   void (*SetCurrentBPM)(ReaProject* __proj, double bpm, bool wantUndo);
  4426. #endif
  4427.  
  4428. #if defined(REAPERAPI_WANT_SetCursorContext) || !defined(REAPERAPI_MINIMAL)
  4429. REAPERAPI_DEF //==============================================
  4430. // SetCursorContext
  4431. // You must use this to change the focus programmatically. mode=0 to focus track panels, 1 to focus the arrange window, 2 to focus the arrange window and select env (or env==NULL to clear the current track/take envelope selection)
  4432.  
  4433.   void (*SetCursorContext)(int mode, TrackEnvelope* env);
  4434. #endif
  4435.  
  4436. #if defined(REAPERAPI_WANT_SetEditCurPos) || !defined(REAPERAPI_MINIMAL)
  4437. REAPERAPI_DEF //==============================================
  4438. // SetEditCurPos
  4439.  
  4440.   void (*SetEditCurPos)(double time, bool moveview, bool seekplay);
  4441. #endif
  4442.  
  4443. #if defined(REAPERAPI_WANT_SetEditCurPos2) || !defined(REAPERAPI_MINIMAL)
  4444. REAPERAPI_DEF //==============================================
  4445. // SetEditCurPos2
  4446.  
  4447.   void (*SetEditCurPos2)(ReaProject* proj, double time, bool moveview, bool seekplay);
  4448. #endif
  4449.  
  4450. #if defined(REAPERAPI_WANT_SetEnvelopePoint) || !defined(REAPERAPI_MINIMAL)
  4451. REAPERAPI_DEF //==============================================
  4452. // SetEnvelopePoint
  4453. // Set attributes of an envelope point. Values that are not supplied will be ignored. If setting multiple points at once, set noSort=true, and call Envelope_SortPoints when done. See GetEnvelopePoint, InsertEnvelopePoint, GetEnvelopeScalingMode.
  4454.  
  4455.   bool (*SetEnvelopePoint)(TrackEnvelope* envelope, int ptidx, double* timeInOptional, double* valueInOptional, int* shapeInOptional, double* tensionInOptional, bool* selectedInOptional, bool* noSortInOptional);
  4456. #endif
  4457.  
  4458. #if defined(REAPERAPI_WANT_SetEnvelopeStateChunk) || !defined(REAPERAPI_MINIMAL)
  4459. REAPERAPI_DEF //==============================================
  4460. // SetEnvelopeStateChunk
  4461. // Sets the RPPXML state of an envelope, returns true if successful. Undo flag is a performance/caching hint.
  4462.  
  4463.   bool (*SetEnvelopeStateChunk)(TrackEnvelope* env, const char* str, bool isundoOptional);
  4464. #endif
  4465.  
  4466. #if defined(REAPERAPI_WANT_SetExtState) || !defined(REAPERAPI_MINIMAL)
  4467. REAPERAPI_DEF //==============================================
  4468. // SetExtState
  4469. // Set the extended state value for a specific section and key. persist=true means the value should be stored and reloaded the next time REAPER is opened. See GetExtState, DeleteExtState, HasExtState.
  4470.  
  4471.   void (*SetExtState)(const char* section, const char* key, const char* value, bool persist);
  4472. #endif
  4473.  
  4474. #if defined(REAPERAPI_WANT_SetGlobalAutomationOverride) || !defined(REAPERAPI_MINIMAL)
  4475. REAPERAPI_DEF //==============================================
  4476. // SetGlobalAutomationOverride
  4477. // mode: see GetGlobalAutomationOverride
  4478.  
  4479.   void (*SetGlobalAutomationOverride)(int mode);
  4480. #endif
  4481.  
  4482. #if defined(REAPERAPI_WANT_SetItemStateChunk) || !defined(REAPERAPI_MINIMAL)
  4483. REAPERAPI_DEF //==============================================
  4484. // SetItemStateChunk
  4485. // Sets the RPPXML state of an item, returns true if successful. Undo flag is a performance/caching hint.
  4486.  
  4487.   bool (*SetItemStateChunk)(MediaItem* item, const char* str, bool isundoOptional);
  4488. #endif
  4489.  
  4490. #if defined(REAPERAPI_WANT_SetMasterTrackVisibility) || !defined(REAPERAPI_MINIMAL)
  4491. REAPERAPI_DEF //==============================================
  4492. // SetMasterTrackVisibility
  4493. // set &1 to show the master track in the TCP, &2 to show in the mixer. Returns the previous visibility state. See GetMasterTrackVisibility.
  4494.  
  4495.   int (*SetMasterTrackVisibility)(int flag);
  4496. #endif
  4497.  
  4498. #if defined(REAPERAPI_WANT_SetMediaItemInfo_Value) || !defined(REAPERAPI_MINIMAL)
  4499. REAPERAPI_DEF //==============================================
  4500. // SetMediaItemInfo_Value
  4501. // Set media item numerical-value attributes.
  4502. // B_MUTE : bool * to muted state
  4503. // B_LOOPSRC : bool * to loop source
  4504. // B_ALLTAKESPLAY : bool * to all takes play
  4505. // B_UISEL : bool * to ui selected
  4506. // C_BEATATTACHMODE : char * to one char of beat attached mode, -1=def, 0=time, 1=allbeats, 2=beatsosonly
  4507. // C_LOCK : char * to one char of lock flags (&1 is locked, currently)
  4508. // D_VOL : double * of item volume (volume bar)
  4509. // D_POSITION : double * of item position (seconds)
  4510. // D_LENGTH : double * of item length (seconds)
  4511. // D_SNAPOFFSET : double * of item snap offset (seconds)
  4512. // D_FADEINLEN : double * of item fade in length (manual, seconds)
  4513. // D_FADEOUTLEN : double * of item fade out length (manual, seconds)
  4514. // D_FADEINDIR : double * of item fade in curve [-1; 1]
  4515. // D_FADEOUTDIR : double * of item fade out curve [-1; 1]
  4516. // D_FADEINLEN_AUTO : double * of item autofade in length (seconds, -1 for no autofade set)
  4517. // D_FADEOUTLEN_AUTO : double * of item autofade out length (seconds, -1 for no autofade set)
  4518. // C_FADEINSHAPE : int * to fadein shape, 0=linear, ...
  4519. // C_FADEOUTSHAPE : int * to fadeout shape
  4520. // I_GROUPID : int * to group ID (0 = no group)
  4521. // I_LASTY : int * to last y position in track (readonly)
  4522. // I_LASTH : int * to last height in track (readonly)
  4523. // 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).
  4524. // I_CURTAKE : int * to active take
  4525. // IP_ITEMNUMBER : int, item number within the track (read-only, returns the item number directly)
  4526. // F_FREEMODE_Y : float * to free mode y position (0..1)
  4527. // F_FREEMODE_H : float * to free mode height (0..1)
  4528.  
  4529.   bool (*SetMediaItemInfo_Value)(MediaItem* item, const char* parmname, double newvalue);
  4530. #endif
  4531.  
  4532. #if defined(REAPERAPI_WANT_SetMediaItemLength) || !defined(REAPERAPI_MINIMAL)
  4533. REAPERAPI_DEF //==============================================
  4534. // SetMediaItemLength
  4535. // Redraws the screen only if refreshUI == true.
  4536. // See UpdateArrange().
  4537.  
  4538.   bool (*SetMediaItemLength)(MediaItem* item, double length, bool refreshUI);
  4539. #endif
  4540.  
  4541. #if defined(REAPERAPI_WANT_SetMediaItemPosition) || !defined(REAPERAPI_MINIMAL)
  4542. REAPERAPI_DEF //==============================================
  4543. // SetMediaItemPosition
  4544. // Redraws the screen only if refreshUI == true.
  4545. // See UpdateArrange().
  4546.  
  4547.   bool (*SetMediaItemPosition)(MediaItem* item, double position, bool refreshUI);
  4548. #endif
  4549.  
  4550. #if defined(REAPERAPI_WANT_SetMediaItemSelected) || !defined(REAPERAPI_MINIMAL)
  4551. REAPERAPI_DEF //==============================================
  4552. // SetMediaItemSelected
  4553.  
  4554.   void (*SetMediaItemSelected)(MediaItem* item, bool selected);
  4555. #endif
  4556.  
  4557. #if defined(REAPERAPI_WANT_SetMediaItemTake_Source) || !defined(REAPERAPI_MINIMAL)
  4558. REAPERAPI_DEF //==============================================
  4559. // SetMediaItemTake_Source
  4560. // Set media source of media item take
  4561.  
  4562.   bool (*SetMediaItemTake_Source)(MediaItem_Take* take, PCM_source* source);
  4563. #endif
  4564.  
  4565. #if defined(REAPERAPI_WANT_SetMediaItemTakeInfo_Value) || !defined(REAPERAPI_MINIMAL)
  4566. REAPERAPI_DEF //==============================================
  4567. // SetMediaItemTakeInfo_Value
  4568. // Set media item take numerical-value attributes.
  4569. // D_STARTOFFS : double *, start offset in take of item
  4570. // D_VOL : double *, take volume
  4571. // D_PAN : double *, take pan
  4572. // D_PANLAW : double *, take pan law (-1.0=default, 0.5=-6dB, 1.0=+0dB, etc)
  4573. // D_PLAYRATE : double *, take playrate (1.0=normal, 2.0=doublespeed, etc)
  4574. // D_PITCH : double *, take pitch adjust (in semitones, 0.0=normal, +12 = one octave up, etc)
  4575. // B_PPITCH, bool *, preserve pitch when changing rate
  4576. // I_CHANMODE, int *, channel mode (0=normal, 1=revstereo, 2=downmix, 3=l, 4=r)
  4577. // I_PITCHMODE, int *, pitch shifter mode, -1=proj default, otherwise high word=shifter low word = parameter
  4578. // 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).
  4579. // IP_TAKENUMBER : int, take number within the item (read-only, returns the take number directly)
  4580.  
  4581.   bool (*SetMediaItemTakeInfo_Value)(MediaItem_Take* take, const char* parmname, double newvalue);
  4582. #endif
  4583.  
  4584. #if defined(REAPERAPI_WANT_SetMediaTrackInfo_Value) || !defined(REAPERAPI_MINIMAL)
  4585. REAPERAPI_DEF //==============================================
  4586. // SetMediaTrackInfo_Value
  4587. // Set track numerical-value attributes.
  4588. // B_MUTE : bool * : mute flag
  4589. // B_PHASE : bool * : invert track phase
  4590. // IP_TRACKNUMBER : int : track number (returns zero if not found, -1 for master track) (read-only, returns the int directly)
  4591. // I_SOLO : int * : 0=not soloed, 1=solo, 2=soloed in place
  4592. // I_FXEN : int * : 0=fx bypassed, nonzero = fx active
  4593. // I_RECARM : int * : 0=not record armed, 1=record armed
  4594. // 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 5 bits represent channel (0=all, 1-16=only chan), then next 5 bits represent physical input (63=all, 62=VKB)
  4595. // 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
  4596. // I_RECMON : int * : record monitor (0=off, 1=normal, 2=not when playing (tapestyle))
  4597. // I_RECMONITEMS : int * : monitor items while recording (0=off, 1=on)
  4598. // I_AUTOMODE : int * : track automation mode (0=trim/off, 1=read, 2=touch, 3=write, 4=latch
  4599. // I_NCHAN : int * : number of track channels, must be 2-64, even
  4600. // I_SELECTED : int * : track selected? 0 or 1
  4601. // I_WNDH : int * : current TCP window height (Read-only)
  4602. // 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
  4603. // I_FOLDERCOMPACT : int * : folder compacting (only valid on folders), 0=normal, 1=small, 2=tiny children
  4604. // 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))
  4605. // I_PERFFLAGS : int * : track perf flags (&1=no media buffering, &2=no anticipative FX)
  4606. // 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).
  4607. // I_HEIGHTOVERRIDE : int * : custom height override for TCP window. 0 for none, otherwise size in pixels
  4608. // D_VOL : double * : trim volume of track (0 (-inf)..1 (+0dB) .. 2 (+6dB) etc ..)
  4609. // D_PAN : double * : trim pan of track (-1..1)
  4610. // D_WIDTH : double * : width of track (-1..1)
  4611. // D_DUALPANL : double * : dualpan position 1 (-1..1), only if I_PANMODE==6
  4612. // D_DUALPANR : double * : dualpan position 2 (-1..1), only if I_PANMODE==6
  4613. // I_PANMODE : int * : pan mode (0 = classic 3.x, 3=new balance, 5=stereo pan, 6 = dual pan)
  4614. // D_PANLAW : double * : pan law of track. <0 for project default, 1.0 for +0dB, etc
  4615. // P_ENV : read only, returns TrackEnvelope *, setNewValue=<VOLENV, <PANENV, etc
  4616. // B_SHOWINMIXER : bool * : show track panel in mixer -- do not use on master
  4617. // B_SHOWINTCP : bool * : show track panel in tcp -- do not use on master
  4618. // B_MAINSEND : bool * : track sends audio to parent
  4619. // B_FREEMODE : bool * : track free-mode enabled (requires UpdateTimeline() after changing etc)
  4620. // C_BEATATTACHMODE : char * : char * to one char of beat attached mode, -1=def, 0=time, 1=allbeats, 2=beatsposonly
  4621. // F_MCP_FXSEND_SCALE : float * : scale of fx+send area in MCP (0.0=smallest allowed, 1=max allowed)
  4622. // F_MCP_SENDRGN_SCALE : float * : scale of send area as proportion of the fx+send total area (0=min allow, 1=max)
  4623.  
  4624.   bool (*SetMediaTrackInfo_Value)(MediaTrack* tr, const char* parmname, double newvalue);
  4625. #endif
  4626.  
  4627. #if defined(REAPERAPI_WANT_SetMixerScroll) || !defined(REAPERAPI_MINIMAL)
  4628. REAPERAPI_DEF //==============================================
  4629. // SetMixerScroll
  4630. // Scroll the mixer so that leftmosttrack is the leftmost visible track. Returns the leftmost track after scrolling, which may be different from the passed-in track if there are not enough tracks to its right.
  4631.  
  4632.   MediaTrack* (*SetMixerScroll)(MediaTrack* leftmosttrack);
  4633. #endif
  4634.  
  4635. #if defined(REAPERAPI_WANT_SetMouseModifier) || !defined(REAPERAPI_MINIMAL)
  4636. REAPERAPI_DEF //==============================================
  4637. // SetMouseModifier
  4638. // Set the mouse modifier assignment for a specific modifier key assignment, in a specific context.
  4639. // Context is a string like "MM_CTX_ITEM". Find these strings by modifying an assignment in
  4640. // Preferences/Editing/Mouse Modifiers, then looking in reaper-mouse.ini.
  4641. // Modifier flag is a number from 0 to 15: add 1 for shift, 2 for control, 4 for alt, 8 for win.
  4642. // (OSX: add 1 for shift, 2 for command, 4 for opt, 8 for control.)
  4643. // For left-click and double-click contexts, the action can be any built-in command ID number
  4644. // or any custom action ID string. Find built-in command IDs in the REAPER actions window
  4645. // (enable "show action IDs" in the context menu), and find custom action ID strings in reaper-kb.ini.
  4646. // For built-in mouse modifier behaviors, find action IDs (which will be low numbers)
  4647. // by modifying an assignment in Preferences/Editing/Mouse Modifiers, then looking in reaper-mouse.ini.
  4648. // Assigning an action of -1 will reset that mouse modifier behavior to factory default.
  4649. // See GetMouseModifier.
  4650. //
  4651.  
  4652.   void (*SetMouseModifier)(const char* context, int modifier_flag, const char* action);
  4653. #endif
  4654.  
  4655. #if defined(REAPERAPI_WANT_SetOnlyTrackSelected) || !defined(REAPERAPI_MINIMAL)
  4656. REAPERAPI_DEF //==============================================
  4657. // SetOnlyTrackSelected
  4658. // Set exactly one track selected, deselect all others
  4659.  
  4660.   void (*SetOnlyTrackSelected)(MediaTrack* track);
  4661. #endif
  4662.  
  4663. #if defined(REAPERAPI_WANT_SetProjectMarker) || !defined(REAPERAPI_MINIMAL)
  4664. REAPERAPI_DEF //==============================================
  4665. // SetProjectMarker
  4666.  
  4667.   bool (*SetProjectMarker)(int markrgnindexnumber, bool isrgn, double pos, double rgnend, const char* name);
  4668. #endif
  4669.  
  4670. #if defined(REAPERAPI_WANT_SetProjectMarker2) || !defined(REAPERAPI_MINIMAL)
  4671. REAPERAPI_DEF //==============================================
  4672. // SetProjectMarker2
  4673.  
  4674.   bool (*SetProjectMarker2)(ReaProject* proj, int markrgnindexnumber, bool isrgn, double pos, double rgnend, const char* name);
  4675. #endif
  4676.  
  4677. #if defined(REAPERAPI_WANT_SetProjectMarker3) || !defined(REAPERAPI_MINIMAL)
  4678. REAPERAPI_DEF //==============================================
  4679. // SetProjectMarker3
  4680.  
  4681.   bool (*SetProjectMarker3)(ReaProject* proj, int markrgnindexnumber, bool isrgn, double pos, double rgnend, const char* name, int color);
  4682. #endif
  4683.  
  4684. #if defined(REAPERAPI_WANT_SetProjectMarker4) || !defined(REAPERAPI_MINIMAL)
  4685. REAPERAPI_DEF //==============================================
  4686. // SetProjectMarker4
  4687. // color should be 0 to not change, or ColorToNative(r,g,b)|0x1000000, flags&1 to clear name
  4688.  
  4689.   bool (*SetProjectMarker4)(ReaProject* proj, int markrgnindexnumber, bool isrgn, double pos, double rgnend, const char* name, int color, int flags);
  4690. #endif
  4691.  
  4692. #if defined(REAPERAPI_WANT_SetProjectMarkerByIndex) || !defined(REAPERAPI_MINIMAL)
  4693. REAPERAPI_DEF //==============================================
  4694. // SetProjectMarkerByIndex
  4695. // See SetProjectMarkerByIndex2.
  4696.  
  4697.   bool (*SetProjectMarkerByIndex)(ReaProject* proj, int markrgnidx, bool isrgn, double pos, double rgnend, int IDnumber, const char* name, int color);
  4698. #endif
  4699.  
  4700. #if defined(REAPERAPI_WANT_SetProjectMarkerByIndex2) || !defined(REAPERAPI_MINIMAL)
  4701. REAPERAPI_DEF //==============================================
  4702. // SetProjectMarkerByIndex2
  4703. // Differs from SetProjectMarker4 in that markrgnidx is 0 for the first marker/region, 1 for the next, etc (see EnumProjectMarkers3), rather than representing the displayed marker/region ID number (see SetProjectMarker3). Function will fail if attempting to set a duplicate ID number for a region (duplicate ID numbers for markers are OK). , flags&1 to clear name.
  4704.  
  4705.   bool (*SetProjectMarkerByIndex2)(ReaProject* proj, int markrgnidx, bool isrgn, double pos, double rgnend, int IDnumber, const char* name, int color, int flags);
  4706. #endif
  4707.  
  4708. #if defined(REAPERAPI_WANT_SetProjExtState) || !defined(REAPERAPI_MINIMAL)
  4709. REAPERAPI_DEF //==============================================
  4710. // SetProjExtState
  4711. // Save a key/value pair for a specific extension, to be restored the next time this specific project is loaded. Typically extname will be the name of a reascript or extension section. If key is NULL or "", all extended data for that extname will be deleted.  If val is NULL or "", the data previously associated with that key will be deleted. Returns the size of the state for this extname. See GetProjExtState, EnumProjExtState.
  4712.  
  4713.   int (*SetProjExtState)(ReaProject* proj, const char* extname, const char* key, const char* value);
  4714. #endif
  4715.  
  4716. #if defined(REAPERAPI_WANT_SetRegionRenderMatrix) || !defined(REAPERAPI_MINIMAL)
  4717. REAPERAPI_DEF //==============================================
  4718. // SetRegionRenderMatrix
  4719. // Add (addorremove > 0) or remove (addorremove < 0) a track from this region when using the region render matrix.
  4720.  
  4721.   void (*SetRegionRenderMatrix)(ReaProject* proj, int regionindex, MediaTrack* track, int addorremove);
  4722. #endif
  4723.  
  4724. #if defined(REAPERAPI_WANT_SetRenderLastError) || !defined(REAPERAPI_MINIMAL)
  4725. REAPERAPI_DEF //==============================================
  4726. // SetRenderLastError
  4727. // Used by pcmsink objects to set an error to display while creating the pcmsink object.
  4728.  
  4729.   void (*SetRenderLastError)(const char* errorstr);
  4730. #endif
  4731.  
  4732. #if defined(REAPERAPI_WANT_SetTakeStretchMarker) || !defined(REAPERAPI_MINIMAL)
  4733. REAPERAPI_DEF //==============================================
  4734. // SetTakeStretchMarker
  4735. // Adds or updates a stretch marker. If idx<0, stretch marker will be added. If idx>=0, stretch marker will be updated. When adding, if srcposInOptional is omitted, source position will be auto-calculated. When updating a stretch marker, if srcposInOptional is omitted, srcpos will not be modified. Position/srcposition values will be constrained to nearby stretch markers. Returns index of stretch marker, or -1 if did not insert (or marker already existed at time).
  4736.  
  4737.   int (*SetTakeStretchMarker)(MediaItem_Take* take, int idx, double pos, const double* srcposInOptional);
  4738. #endif
  4739.  
  4740. #if defined(REAPERAPI_WANT_SetTakeStretchMarkerSlope) || !defined(REAPERAPI_MINIMAL)
  4741. REAPERAPI_DEF //==============================================
  4742. // SetTakeStretchMarkerSlope
  4743. // See GetTakeStretchMarkerSlope
  4744.  
  4745.   bool (*SetTakeStretchMarkerSlope)(MediaItem_Take* take, int idx, double slope);
  4746. #endif
  4747.  
  4748. #if defined(REAPERAPI_WANT_SetTempoTimeSigMarker) || !defined(REAPERAPI_MINIMAL)
  4749. REAPERAPI_DEF //==============================================
  4750. // SetTempoTimeSigMarker
  4751. // Set parameters of a tempo/time signature marker. Provide either timepos (with measurepos=-1, beatpos=-1), or measurepos and beatpos (with timepos=-1). If timesig_num and timesig_denom are zero, the previous time signature will be used. ptidx=-1 will insert a new tempo/time signature marker. See CountTempoTimeSigMarkers, GetTempoTimeSigMarker, AddTempoTimeSigMarker.
  4752.  
  4753.   bool (*SetTempoTimeSigMarker)(ReaProject* proj, int ptidx, double timepos, int measurepos, double beatpos, double bpm, int timesig_num, int timesig_denom, bool lineartempo);
  4754. #endif
  4755.  
  4756. #if defined(REAPERAPI_WANT_SetToggleCommandState) || !defined(REAPERAPI_MINIMAL)
  4757. REAPERAPI_DEF //==============================================
  4758. // SetToggleCommandState
  4759. // Updates the toggle state of an action, returns true if succeeded. Only ReaScripts can have their toggle states changed programmatically. See RefreshToolbar2.
  4760.  
  4761.   bool (*SetToggleCommandState)(int section_id, int command_id, int state);
  4762. #endif
  4763.  
  4764. #if defined(REAPERAPI_WANT_SetTrackAutomationMode) || !defined(REAPERAPI_MINIMAL)
  4765. REAPERAPI_DEF //==============================================
  4766. // SetTrackAutomationMode
  4767.  
  4768.   void (*SetTrackAutomationMode)(MediaTrack* tr, int mode);
  4769. #endif
  4770.  
  4771. #if defined(REAPERAPI_WANT_SetTrackColor) || !defined(REAPERAPI_MINIMAL)
  4772. REAPERAPI_DEF //==============================================
  4773. // SetTrackColor
  4774. // Set the custom track color, color is OS dependent (i.e. ColorToNative(r,g,b).
  4775.  
  4776.   void (*SetTrackColor)(MediaTrack* track, int color);
  4777. #endif
  4778.  
  4779. #if defined(REAPERAPI_WANT_SetTrackMIDINoteName) || !defined(REAPERAPI_MINIMAL)
  4780. REAPERAPI_DEF //==============================================
  4781. // SetTrackMIDINoteName
  4782. // channel < 0 assigns these note names to all channels.
  4783.  
  4784.   bool (*SetTrackMIDINoteName)(int track, int note, int chan, const char* name);
  4785. #endif
  4786.  
  4787. #if defined(REAPERAPI_WANT_SetTrackMIDINoteNameEx) || !defined(REAPERAPI_MINIMAL)
  4788. REAPERAPI_DEF //==============================================
  4789. // SetTrackMIDINoteNameEx
  4790. // channel < 0 assigns these note names to all channels.
  4791.  
  4792.   bool (*SetTrackMIDINoteNameEx)(ReaProject* proj, MediaTrack* track, int note, int chan, const char* name);
  4793. #endif
  4794.  
  4795. #if defined(REAPERAPI_WANT_SetTrackSelected) || !defined(REAPERAPI_MINIMAL)
  4796. REAPERAPI_DEF //==============================================
  4797. // SetTrackSelected
  4798.  
  4799.   void (*SetTrackSelected)(MediaTrack* track, bool selected);
  4800. #endif
  4801.  
  4802. #if defined(REAPERAPI_WANT_SetTrackSendUIPan) || !defined(REAPERAPI_MINIMAL)
  4803. REAPERAPI_DEF //==============================================
  4804. // SetTrackSendUIPan
  4805. // send_idx<0 for receives, isend=1 for end of edit, -1 for an instant edit (such as reset), 0 for normal tweak.
  4806.  
  4807.   bool (*SetTrackSendUIPan)(MediaTrack* track, int send_idx, double pan, int isend);
  4808. #endif
  4809.  
  4810. #if defined(REAPERAPI_WANT_SetTrackSendUIVol) || !defined(REAPERAPI_MINIMAL)
  4811. REAPERAPI_DEF //==============================================
  4812. // SetTrackSendUIVol
  4813. // send_idx<0 for receives, isend=1 for end of edit, -1 for an instant edit (such as reset), 0 for normal tweak.
  4814.  
  4815.   bool (*SetTrackSendUIVol)(MediaTrack* track, int send_idx, double vol, int isend);
  4816. #endif
  4817.  
  4818. #if defined(REAPERAPI_WANT_SetTrackStateChunk) || !defined(REAPERAPI_MINIMAL)
  4819. REAPERAPI_DEF //==============================================
  4820. // SetTrackStateChunk
  4821. // Sets the RPPXML state of a track, returns true if successful. Undo flag is a performance/caching hint.
  4822.  
  4823.   bool (*SetTrackStateChunk)(MediaTrack* track, const char* str, bool isundoOptional);
  4824. #endif
  4825.  
  4826. #if defined(REAPERAPI_WANT_ShowActionList) || !defined(REAPERAPI_MINIMAL)
  4827. REAPERAPI_DEF //==============================================
  4828. // ShowActionList
  4829.  
  4830.   void (*ShowActionList)(KbdSectionInfo* caller, HWND callerWnd);
  4831. #endif
  4832.  
  4833. #if defined(REAPERAPI_WANT_ShowConsoleMsg) || !defined(REAPERAPI_MINIMAL)
  4834. REAPERAPI_DEF //==============================================
  4835. // ShowConsoleMsg
  4836. // Show a message to the user (also useful for debugging). Send "\n" for newline, "" to clear the console. See ClearConsole
  4837.  
  4838.   void (*ShowConsoleMsg)(const char* msg);
  4839. #endif
  4840.  
  4841. #if defined(REAPERAPI_WANT_ShowMessageBox) || !defined(REAPERAPI_MINIMAL)
  4842. REAPERAPI_DEF //==============================================
  4843. // ShowMessageBox
  4844. // type 0=OK,1=OKCANCEL,2=ABORTRETRYIGNORE,3=YESNOCANCEL,4=YESNO,5=RETRYCANCEL : ret 1=OK,2=CANCEL,3=ABORT,4=RETRY,5=IGNORE,6=YES,7=NO
  4845.  
  4846.   int (*ShowMessageBox)(const char* msg, const char* title, int type);
  4847. #endif
  4848.  
  4849. #if defined(REAPERAPI_WANT_SLIDER2DB) || !defined(REAPERAPI_MINIMAL)
  4850. REAPERAPI_DEF //==============================================
  4851. // SLIDER2DB
  4852.  
  4853.   double (*SLIDER2DB)(double y);
  4854. #endif
  4855.  
  4856. #if defined(REAPERAPI_WANT_SnapToGrid) || !defined(REAPERAPI_MINIMAL)
  4857. REAPERAPI_DEF //==============================================
  4858. // SnapToGrid
  4859.  
  4860.   double (*SnapToGrid)(ReaProject* project, double time_pos);
  4861. #endif
  4862.  
  4863. #if defined(REAPERAPI_WANT_SoloAllTracks) || !defined(REAPERAPI_MINIMAL)
  4864. REAPERAPI_DEF //==============================================
  4865. // SoloAllTracks
  4866. // solo=2 for SIP
  4867.  
  4868.   void (*SoloAllTracks)(int solo);
  4869. #endif
  4870.  
  4871. #if defined(REAPERAPI_WANT_Splash_GetWnd) || !defined(REAPERAPI_MINIMAL)
  4872. REAPERAPI_DEF //==============================================
  4873. // Splash_GetWnd
  4874. // gets the splash window, in case you want to display a message over it. Returns NULL when the sphah window is not displayed.
  4875.  
  4876.   HWND (*Splash_GetWnd)();
  4877. #endif
  4878.  
  4879. #if defined(REAPERAPI_WANT_SplitMediaItem) || !defined(REAPERAPI_MINIMAL)
  4880. REAPERAPI_DEF //==============================================
  4881. // SplitMediaItem
  4882. // the original item becomes the left-hand split, the function returns the right-hand split (or NULL if the split failed)
  4883.  
  4884.   MediaItem* (*SplitMediaItem)(MediaItem* item, double position);
  4885. #endif
  4886.  
  4887. #if defined(REAPERAPI_WANT_StopPreview) || !defined(REAPERAPI_MINIMAL)
  4888. REAPERAPI_DEF //==============================================
  4889. // StopPreview
  4890. // return nonzero on success
  4891.  
  4892.   int (*StopPreview)(preview_register_t* preview);
  4893. #endif
  4894.  
  4895. #if defined(REAPERAPI_WANT_StopTrackPreview) || !defined(REAPERAPI_MINIMAL)
  4896. REAPERAPI_DEF //==============================================
  4897. // StopTrackPreview
  4898. // return nonzero on success
  4899.  
  4900.   int (*StopTrackPreview)(preview_register_t* preview);
  4901. #endif
  4902.  
  4903. #if defined(REAPERAPI_WANT_StopTrackPreview2) || !defined(REAPERAPI_MINIMAL)
  4904. REAPERAPI_DEF //==============================================
  4905. // StopTrackPreview2
  4906. // return nonzero on success
  4907.  
  4908.   int (*StopTrackPreview2)(void* proj, preview_register_t* preview);
  4909. #endif
  4910.  
  4911. #if defined(REAPERAPI_WANT_stringToGuid) || !defined(REAPERAPI_MINIMAL)
  4912. REAPERAPI_DEF //==============================================
  4913. // stringToGuid
  4914.  
  4915.   void (*stringToGuid)(const char* str, GUID* g);
  4916. #endif
  4917.  
  4918. #if defined(REAPERAPI_WANT_StuffMIDIMessage) || !defined(REAPERAPI_MINIMAL)
  4919. REAPERAPI_DEF //==============================================
  4920. // StuffMIDIMessage
  4921. // Stuffs a 3 byte MIDI message into either the Virtual MIDI Keyboard queue, or the MIDI-as-control input queue. mode=0 for VKB, 1 for control (actions map etc), 2 for VKB-on-current-channel.
  4922.  
  4923.   void (*StuffMIDIMessage)(int mode, int msg1, int msg2, int msg3);
  4924. #endif
  4925.  
  4926. #if defined(REAPERAPI_WANT_TakeIsMIDI) || !defined(REAPERAPI_MINIMAL)
  4927. REAPERAPI_DEF //==============================================
  4928. // TakeIsMIDI
  4929. // Returns true if the active take contains MIDI.
  4930.  
  4931.   bool (*TakeIsMIDI)(MediaItem_Take* take);
  4932. #endif
  4933.  
  4934. #if defined(REAPERAPI_WANT_time_precise) || !defined(REAPERAPI_MINIMAL)
  4935. REAPERAPI_DEF //==============================================
  4936. // time_precise
  4937. // Gets a precise system timestamp in seconds
  4938.  
  4939.   double (*time_precise)();
  4940. #endif
  4941.  
  4942. #if defined(REAPERAPI_WANT_TimeMap2_beatsToTime) || !defined(REAPERAPI_MINIMAL)
  4943. REAPERAPI_DEF //==============================================
  4944. // TimeMap2_beatsToTime
  4945. // convert a beat position (or optionally a beats+measures if measures is non-NULL) to time.
  4946.  
  4947.   double (*TimeMap2_beatsToTime)(ReaProject* proj, double tpos, const int* measuresInOptional);
  4948. #endif
  4949.  
  4950. #if defined(REAPERAPI_WANT_TimeMap2_GetDividedBpmAtTime) || !defined(REAPERAPI_MINIMAL)
  4951. REAPERAPI_DEF //==============================================
  4952. // TimeMap2_GetDividedBpmAtTime
  4953. // get the effective BPM at the time (seconds) position (i.e. 2x in /8 signatures)
  4954.  
  4955.   double (*TimeMap2_GetDividedBpmAtTime)(ReaProject* proj, double time);
  4956. #endif
  4957.  
  4958. #if defined(REAPERAPI_WANT_TimeMap2_GetNextChangeTime) || !defined(REAPERAPI_MINIMAL)
  4959. REAPERAPI_DEF //==============================================
  4960. // TimeMap2_GetNextChangeTime
  4961. // when does the next time map (tempo or time sig) change occur
  4962.  
  4963.   double (*TimeMap2_GetNextChangeTime)(ReaProject* proj, double time);
  4964. #endif
  4965.  
  4966. #if defined(REAPERAPI_WANT_TimeMap2_QNToTime) || !defined(REAPERAPI_MINIMAL)
  4967. REAPERAPI_DEF //==============================================
  4968. // TimeMap2_QNToTime
  4969. // converts project QN position to time.
  4970.  
  4971.   double (*TimeMap2_QNToTime)(ReaProject* proj, double qn);
  4972. #endif
  4973.  
  4974. #if defined(REAPERAPI_WANT_TimeMap2_timeToBeats) || !defined(REAPERAPI_MINIMAL)
  4975. REAPERAPI_DEF //==============================================
  4976. // TimeMap2_timeToBeats
  4977. // convert a time into beats.
  4978. // if measures is non-NULL, measures will be set to the measure count, return value will be beats since measure.
  4979. // if cml is non-NULL, will be set to current measure length in beats (i.e. time signature numerator)
  4980. // if fullbeats is non-NULL, and measures is non-NULL, fullbeats will get the full beat count (same value returned if measures is NULL).
  4981. // if cdenom is non-NULL, will be set to the current time signature denominator.
  4982.  
  4983.   double (*TimeMap2_timeToBeats)(ReaProject* proj, double tpos, int* measuresOutOptional, int* cmlOutOptional, double* fullbeatsOutOptional, int* cdenomOutOptional);
  4984. #endif
  4985.  
  4986. #if defined(REAPERAPI_WANT_TimeMap2_timeToQN) || !defined(REAPERAPI_MINIMAL)
  4987. REAPERAPI_DEF //==============================================
  4988. // TimeMap2_timeToQN
  4989. // converts project time position to QN position.
  4990.  
  4991.   double (*TimeMap2_timeToQN)(ReaProject* proj, double tpos);
  4992. #endif
  4993.  
  4994. #if defined(REAPERAPI_WANT_TimeMap_curFrameRate) || !defined(REAPERAPI_MINIMAL)
  4995. REAPERAPI_DEF //==============================================
  4996. // TimeMap_curFrameRate
  4997. // Gets project framerate, and optionally whether it is drop-frame timecode
  4998.  
  4999.   double (*TimeMap_curFrameRate)(ReaProject* proj, bool* dropFrameOutOptional);
  5000. #endif
  5001.  
  5002. #if defined(REAPERAPI_WANT_TimeMap_GetDividedBpmAtTime) || !defined(REAPERAPI_MINIMAL)
  5003. REAPERAPI_DEF //==============================================
  5004. // TimeMap_GetDividedBpmAtTime
  5005. // get the effective BPM at the time (seconds) position (i.e. 2x in /8 signatures)
  5006.  
  5007.   double (*TimeMap_GetDividedBpmAtTime)(double time);
  5008. #endif
  5009.  
  5010. #if defined(REAPERAPI_WANT_TimeMap_GetMeasureInfo) || !defined(REAPERAPI_MINIMAL)
  5011. REAPERAPI_DEF //==============================================
  5012. // TimeMap_GetMeasureInfo
  5013. // Get the QN position and time signature information for the start of a measure. Return the time in seconds of the measure start.
  5014.  
  5015.   double (*TimeMap_GetMeasureInfo)(ReaProject* proj, int measure, double* qn_startOut, double* qn_endOut, int* timesig_numOut, int* timesig_denomOut, double* tempoOut);
  5016. #endif
  5017.  
  5018. #if defined(REAPERAPI_WANT_TimeMap_GetMetronomePattern) || !defined(REAPERAPI_MINIMAL)
  5019. REAPERAPI_DEF //==============================================
  5020. // TimeMap_GetMetronomePattern
  5021. // 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.
  5022.  
  5023.   int (*TimeMap_GetMetronomePattern)(ReaProject* proj, double time, char* pattern, int pattern_sz);
  5024. #endif
  5025.  
  5026. #if defined(REAPERAPI_WANT_TimeMap_GetTimeSigAtTime) || !defined(REAPERAPI_MINIMAL)
  5027. REAPERAPI_DEF //==============================================
  5028. // TimeMap_GetTimeSigAtTime
  5029. // get the effective time signature and tempo
  5030.  
  5031.   void (*TimeMap_GetTimeSigAtTime)(ReaProject* proj, double time, int* timesig_numOut, int* timesig_denomOut, double* tempoOut);
  5032. #endif
  5033.  
  5034. #if defined(REAPERAPI_WANT_TimeMap_QNToMeasures) || !defined(REAPERAPI_MINIMAL)
  5035. REAPERAPI_DEF //==============================================
  5036. // TimeMap_QNToMeasures
  5037. // Find which measure the given QN position falls in.
  5038.  
  5039.   int (*TimeMap_QNToMeasures)(ReaProject* proj, double qn, double* qnMeasureStartOutOptional, double* qnMeasureEndOutOptional);
  5040. #endif
  5041.  
  5042. #if defined(REAPERAPI_WANT_TimeMap_QNToTime) || !defined(REAPERAPI_MINIMAL)
  5043. REAPERAPI_DEF //==============================================
  5044. // TimeMap_QNToTime
  5045. // converts project QN position to time.
  5046.  
  5047.   double (*TimeMap_QNToTime)(double qn);
  5048. #endif
  5049.  
  5050. #if defined(REAPERAPI_WANT_TimeMap_QNToTime_abs) || !defined(REAPERAPI_MINIMAL)
  5051. REAPERAPI_DEF //==============================================
  5052. // TimeMap_QNToTime_abs
  5053. // Converts project quarter note count (QN) to time. QN is counted from the start of the project, regardless of any partial measures. See TimeMap2_QNToTime
  5054.  
  5055.   double (*TimeMap_QNToTime_abs)(ReaProject* proj, double qn);
  5056. #endif
  5057.  
  5058. #if defined(REAPERAPI_WANT_TimeMap_timeToQN) || !defined(REAPERAPI_MINIMAL)
  5059. REAPERAPI_DEF //==============================================
  5060. // TimeMap_timeToQN
  5061. // converts project QN position to time.
  5062.  
  5063.   double (*TimeMap_timeToQN)(double tpos);
  5064. #endif
  5065.  
  5066. #if defined(REAPERAPI_WANT_TimeMap_timeToQN_abs) || !defined(REAPERAPI_MINIMAL)
  5067. REAPERAPI_DEF //==============================================
  5068. // TimeMap_timeToQN_abs
  5069. // Converts project time position to quarter note count (QN). QN is counted from the start of the project, regardless of any partial measures. See TimeMap2_timeToQN
  5070.  
  5071.   double (*TimeMap_timeToQN_abs)(ReaProject* proj, double tpos);
  5072. #endif
  5073.  
  5074. #if defined(REAPERAPI_WANT_ToggleTrackSendUIMute) || !defined(REAPERAPI_MINIMAL)
  5075. REAPERAPI_DEF //==============================================
  5076. // ToggleTrackSendUIMute
  5077. // send_idx<0 for receives
  5078.  
  5079.   bool (*ToggleTrackSendUIMute)(MediaTrack* track, int send_idx);
  5080. #endif
  5081.  
  5082. #if defined(REAPERAPI_WANT_Track_GetPeakHoldDB) || !defined(REAPERAPI_MINIMAL)
  5083. REAPERAPI_DEF //==============================================
  5084. // Track_GetPeakHoldDB
  5085.  
  5086.   double (*Track_GetPeakHoldDB)(MediaTrack* track, int channel, bool clear);
  5087. #endif
  5088.  
  5089. #if defined(REAPERAPI_WANT_Track_GetPeakInfo) || !defined(REAPERAPI_MINIMAL)
  5090. REAPERAPI_DEF //==============================================
  5091. // Track_GetPeakInfo
  5092.  
  5093.   double (*Track_GetPeakInfo)(MediaTrack* track, int channel);
  5094. #endif
  5095.  
  5096. #if defined(REAPERAPI_WANT_TrackCtl_SetToolTip) || !defined(REAPERAPI_MINIMAL)
  5097. REAPERAPI_DEF //==============================================
  5098. // TrackCtl_SetToolTip
  5099. // displays tooltip at location, or removes if empty string
  5100.  
  5101.   void (*TrackCtl_SetToolTip)(const char* fmt, int xpos, int ypos, bool topmost);
  5102. #endif
  5103.  
  5104. #if defined(REAPERAPI_WANT_TrackFX_EndParamEdit) || !defined(REAPERAPI_MINIMAL)
  5105. REAPERAPI_DEF //==============================================
  5106. // TrackFX_EndParamEdit
  5107.  
  5108.   bool (*TrackFX_EndParamEdit)(MediaTrack* track, int fx, int param);
  5109. #endif
  5110.  
  5111. #if defined(REAPERAPI_WANT_TrackFX_FormatParamValue) || !defined(REAPERAPI_MINIMAL)
  5112. REAPERAPI_DEF //==============================================
  5113. // TrackFX_FormatParamValue
  5114. // Note: only works with FX that support Cockos VST extensions.
  5115.  
  5116.   bool (*TrackFX_FormatParamValue)(MediaTrack* track, int fx, int param, double val, char* buf, int buf_sz);
  5117. #endif
  5118.  
  5119. #if defined(REAPERAPI_WANT_TrackFX_FormatParamValueNormalized) || !defined(REAPERAPI_MINIMAL)
  5120. REAPERAPI_DEF //==============================================
  5121. // TrackFX_FormatParamValueNormalized
  5122. // Note: only works with FX that support Cockos VST extensions.
  5123.  
  5124.   bool (*TrackFX_FormatParamValueNormalized)(MediaTrack* track, int fx, int param, double value, char* buf, int buf_sz);
  5125. #endif
  5126.  
  5127. #if defined(REAPERAPI_WANT_TrackFX_GetByName) || !defined(REAPERAPI_MINIMAL)
  5128. REAPERAPI_DEF //==============================================
  5129. // TrackFX_GetByName
  5130. // Get the index of the first track FX insert that matches fxname. If the FX is not in the chain and instantiate is true, it will be inserted. See TrackFX_GetInstrument, TrackFX_GetEQ.
  5131.  
  5132.   int (*TrackFX_GetByName)(MediaTrack* track, const char* fxname, bool instantiate);
  5133. #endif
  5134.  
  5135. #if defined(REAPERAPI_WANT_TrackFX_GetChainVisible) || !defined(REAPERAPI_MINIMAL)
  5136. REAPERAPI_DEF //==============================================
  5137. // TrackFX_GetChainVisible
  5138. // returns index of effect visible in chain, or -1 for chain hidden, or -2 for chain visible but no effect selected
  5139.  
  5140.   int (*TrackFX_GetChainVisible)(MediaTrack* track);
  5141. #endif
  5142.  
  5143. #if defined(REAPERAPI_WANT_TrackFX_GetCount) || !defined(REAPERAPI_MINIMAL)
  5144. REAPERAPI_DEF //==============================================
  5145. // TrackFX_GetCount
  5146.  
  5147.   int (*TrackFX_GetCount)(MediaTrack* track);
  5148. #endif
  5149.  
  5150. #if defined(REAPERAPI_WANT_TrackFX_GetEnabled) || !defined(REAPERAPI_MINIMAL)
  5151. REAPERAPI_DEF //==============================================
  5152. // TrackFX_GetEnabled
  5153. // See TrackFX_SetEnabled
  5154.  
  5155.   bool (*TrackFX_GetEnabled)(MediaTrack* track, int fx);
  5156. #endif
  5157.  
  5158. #if defined(REAPERAPI_WANT_TrackFX_GetEQ) || !defined(REAPERAPI_MINIMAL)
  5159. REAPERAPI_DEF //==============================================
  5160. // TrackFX_GetEQ
  5161. // Get the index of ReaEQ in the track FX chain. If ReaEQ is not in the chain and instantiate is true, it will be inserted. See TrackFX_GetInstrument, TrackFX_GetByName.
  5162.  
  5163.   int (*TrackFX_GetEQ)(MediaTrack* track, bool instantiate);
  5164. #endif
  5165.  
  5166. #if defined(REAPERAPI_WANT_TrackFX_GetEQBandEnabled) || !defined(REAPERAPI_MINIMAL)
  5167. REAPERAPI_DEF //==============================================
  5168. // TrackFX_GetEQBandEnabled
  5169. // Returns true if the EQ band is enabled.
  5170. // Returns false if the band is disabled, or if track/fxidx is not ReaEQ.
  5171. // Bandtype: 0=lhipass, 1=loshelf, 2=band, 3=notch, 4=hishelf, 5=lopass.
  5172. // Bandidx: 0=first band matching bandtype, 1=2nd band matching bandtype, etc.
  5173. // See TrackFX_GetEQ, TrackFX_GetEQParam, TrackFX_SetEQParam, TrackFX_SetEQBandEnabled.
  5174.  
  5175.   bool (*TrackFX_GetEQBandEnabled)(MediaTrack* track, int fxidx, int bandtype, int bandidx);
  5176. #endif
  5177.  
  5178. #if defined(REAPERAPI_WANT_TrackFX_GetEQParam) || !defined(REAPERAPI_MINIMAL)
  5179. REAPERAPI_DEF //==============================================
  5180. // TrackFX_GetEQParam
  5181. // Returns false if track/fxidx is not ReaEQ.
  5182. // Bandtype: -1=master gain, 0=lhipass, 1=loshelf, 2=band, 3=notch, 4=hishelf, 5=lopass.
  5183. // Bandidx (ignored for master gain): 0=first band matching bandtype, 1=2nd band matching bandtype, etc.
  5184. // Paramtype (ignored for master gain): 0=freq, 1=gain, 2=Q.
  5185. // See TrackFX_GetEQ, TrackFX_SetEQParam, TrackFX_GetEQBandEnabled, TrackFX_SetEQBandEnabled.
  5186.  
  5187.   bool (*TrackFX_GetEQParam)(MediaTrack* track, int fxidx, int paramidx, int* bandtypeOut, int* bandidxOut, int* paramtypeOut, double* normvalOut);
  5188. #endif
  5189.  
  5190. #if defined(REAPERAPI_WANT_TrackFX_GetFloatingWindow) || !defined(REAPERAPI_MINIMAL)
  5191. REAPERAPI_DEF //==============================================
  5192. // TrackFX_GetFloatingWindow
  5193. // returns HWND of floating window for effect index, if any
  5194.  
  5195.   HWND (*TrackFX_GetFloatingWindow)(MediaTrack* track, int index);
  5196. #endif
  5197.  
  5198. #if defined(REAPERAPI_WANT_TrackFX_GetFormattedParamValue) || !defined(REAPERAPI_MINIMAL)
  5199. REAPERAPI_DEF //==============================================
  5200. // TrackFX_GetFormattedParamValue
  5201.  
  5202.   bool (*TrackFX_GetFormattedParamValue)(MediaTrack* track, int fx, int param, char* buf, int buf_sz);
  5203. #endif
  5204.  
  5205. #if defined(REAPERAPI_WANT_TrackFX_GetFXGUID) || !defined(REAPERAPI_MINIMAL)
  5206. REAPERAPI_DEF //==============================================
  5207. // TrackFX_GetFXGUID
  5208.  
  5209.   GUID* (*TrackFX_GetFXGUID)(MediaTrack* track, int fx);
  5210. #endif
  5211.  
  5212. #if defined(REAPERAPI_WANT_TrackFX_GetFXName) || !defined(REAPERAPI_MINIMAL)
  5213. REAPERAPI_DEF //==============================================
  5214. // TrackFX_GetFXName
  5215.  
  5216.   bool (*TrackFX_GetFXName)(MediaTrack* track, int fx, char* buf, int buf_sz);
  5217. #endif
  5218.  
  5219. #if defined(REAPERAPI_WANT_TrackFX_GetInstrument) || !defined(REAPERAPI_MINIMAL)
  5220. REAPERAPI_DEF //==============================================
  5221. // TrackFX_GetInstrument
  5222. // Get the index of the first track FX insert that is a virtual instrument, or -1 if none. See TrackFX_GetEQ, TrackFX_GetByName.
  5223.  
  5224.   int (*TrackFX_GetInstrument)(MediaTrack* track);
  5225. #endif
  5226.  
  5227. #if defined(REAPERAPI_WANT_TrackFX_GetNumParams) || !defined(REAPERAPI_MINIMAL)
  5228. REAPERAPI_DEF //==============================================
  5229. // TrackFX_GetNumParams
  5230.  
  5231.   int (*TrackFX_GetNumParams)(MediaTrack* track, int fx);
  5232. #endif
  5233.  
  5234. #if defined(REAPERAPI_WANT_TrackFX_GetOpen) || !defined(REAPERAPI_MINIMAL)
  5235. REAPERAPI_DEF //==============================================
  5236. // TrackFX_GetOpen
  5237. // Returns true if this FX UI is open in the FX chain window or a floating window. See TrackFX_SetOpen
  5238.  
  5239.   bool (*TrackFX_GetOpen)(MediaTrack* track, int fx);
  5240. #endif
  5241.  
  5242. #if defined(REAPERAPI_WANT_TrackFX_GetParam) || !defined(REAPERAPI_MINIMAL)
  5243. REAPERAPI_DEF //==============================================
  5244. // TrackFX_GetParam
  5245.  
  5246.   double (*TrackFX_GetParam)(MediaTrack* track, int fx, int param, double* minvalOut, double* maxvalOut);
  5247. #endif
  5248.  
  5249. #if defined(REAPERAPI_WANT_TrackFX_GetParameterStepSizes) || !defined(REAPERAPI_MINIMAL)
  5250. REAPERAPI_DEF //==============================================
  5251. // TrackFX_GetParameterStepSizes
  5252.  
  5253.   bool (*TrackFX_GetParameterStepSizes)(MediaTrack* track, int fx, int param, double* stepOut, double* smallstepOut, double* largestepOut, bool* istoggleOut);
  5254. #endif
  5255.  
  5256. #if defined(REAPERAPI_WANT_TrackFX_GetParamEx) || !defined(REAPERAPI_MINIMAL)
  5257. REAPERAPI_DEF //==============================================
  5258. // TrackFX_GetParamEx
  5259.  
  5260.   double (*TrackFX_GetParamEx)(MediaTrack* track, int fx, int param, double* minvalOut, double* maxvalOut, double* midvalOut);
  5261. #endif
  5262.  
  5263. #if defined(REAPERAPI_WANT_TrackFX_GetParamName) || !defined(REAPERAPI_MINIMAL)
  5264. REAPERAPI_DEF //==============================================
  5265. // TrackFX_GetParamName
  5266.  
  5267.   bool (*TrackFX_GetParamName)(MediaTrack* track, int fx, int param, char* buf, int buf_sz);
  5268. #endif
  5269.  
  5270. #if defined(REAPERAPI_WANT_TrackFX_GetParamNormalized) || !defined(REAPERAPI_MINIMAL)
  5271. REAPERAPI_DEF //==============================================
  5272. // TrackFX_GetParamNormalized
  5273.  
  5274.   double (*TrackFX_GetParamNormalized)(MediaTrack* track, int fx, int param);
  5275. #endif
  5276.  
  5277. #if defined(REAPERAPI_WANT_TrackFX_GetPreset) || !defined(REAPERAPI_MINIMAL)
  5278. REAPERAPI_DEF //==============================================
  5279. // TrackFX_GetPreset
  5280. // 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.
  5281.  
  5282.   bool (*TrackFX_GetPreset)(MediaTrack* track, int fx, char* presetname, int presetname_sz);
  5283. #endif
  5284.  
  5285. #if defined(REAPERAPI_WANT_TrackFX_GetPresetIndex) || !defined(REAPERAPI_MINIMAL)
  5286. REAPERAPI_DEF //==============================================
  5287. // TrackFX_GetPresetIndex
  5288. // Returns current preset index, or -1 if error. numberOfPresetsOut will be set to total number of presets available. See TrackFX_SetPresetByIndex
  5289.  
  5290.   int (*TrackFX_GetPresetIndex)(MediaTrack* track, int fx, int* numberOfPresetsOut);
  5291. #endif
  5292.  
  5293. #if defined(REAPERAPI_WANT_TrackFX_NavigatePresets) || !defined(REAPERAPI_MINIMAL)
  5294. REAPERAPI_DEF //==============================================
  5295. // TrackFX_NavigatePresets
  5296. // presetmove==1 activates the next preset, presetmove==-1 activates the previous preset, etc.
  5297.  
  5298.   bool (*TrackFX_NavigatePresets)(MediaTrack* track, int fx, int presetmove);
  5299. #endif
  5300.  
  5301. #if defined(REAPERAPI_WANT_TrackFX_SetEnabled) || !defined(REAPERAPI_MINIMAL)
  5302. REAPERAPI_DEF //==============================================
  5303. // TrackFX_SetEnabled
  5304. // See TrackFX_GetEnabled
  5305.  
  5306.   void (*TrackFX_SetEnabled)(MediaTrack* track, int fx, bool enabled);
  5307. #endif
  5308.  
  5309. #if defined(REAPERAPI_WANT_TrackFX_SetEQBandEnabled) || !defined(REAPERAPI_MINIMAL)
  5310. REAPERAPI_DEF //==============================================
  5311. // TrackFX_SetEQBandEnabled
  5312. // Enable or disable a ReaEQ band.
  5313. // Returns false if track/fxidx is not ReaEQ.
  5314. // Bandtype: 0=lhipass, 1=loshelf, 2=band, 3=notch, 4=hishelf, 5=lopass.
  5315. // Bandidx: 0=first band matching bandtype, 1=2nd band matching bandtype, etc.
  5316. // See TrackFX_GetEQ, TrackFX_GetEQParam, TrackFX_SetEQParam, TrackFX_GetEQBandEnabled.
  5317.  
  5318.   bool (*TrackFX_SetEQBandEnabled)(MediaTrack* track, int fxidx, int bandtype, int bandidx, bool enable);
  5319. #endif
  5320.  
  5321. #if defined(REAPERAPI_WANT_TrackFX_SetEQParam) || !defined(REAPERAPI_MINIMAL)
  5322. REAPERAPI_DEF //==============================================
  5323. // TrackFX_SetEQParam
  5324. // Returns false if track/fxidx is not ReaEQ. Targets a band matching bandtype.
  5325. // Bandtype: -1=master gain, 0=lhipass, 1=loshelf, 2=band, 3=notch, 4=hishelf, 5=lopass.
  5326. // Bandidx (ignored for master gain): 0=target first band matching bandtype, 1=target 2nd band matching bandtype, etc.
  5327. // Paramtype (ignored for master gain): 0=freq, 1=gain, 2=Q.
  5328. // See TrackFX_GetEQ, TrackFX_GetEQParam, TrackFX_GetEQBandEnabled, TrackFX_SetEQBandEnabled.
  5329.  
  5330.   bool (*TrackFX_SetEQParam)(MediaTrack* track, int fxidx, int bandtype, int bandidx, int paramtype, double val, bool isnorm);
  5331. #endif
  5332.  
  5333. #if defined(REAPERAPI_WANT_TrackFX_SetOpen) || !defined(REAPERAPI_MINIMAL)
  5334. REAPERAPI_DEF //==============================================
  5335. // TrackFX_SetOpen
  5336. // Open this FX UI. See TrackFX_GetOpen
  5337.  
  5338.   void (*TrackFX_SetOpen)(MediaTrack* track, int fx, bool open);
  5339. #endif
  5340.  
  5341. #if defined(REAPERAPI_WANT_TrackFX_SetParam) || !defined(REAPERAPI_MINIMAL)
  5342. REAPERAPI_DEF //==============================================
  5343. // TrackFX_SetParam
  5344.  
  5345.   bool (*TrackFX_SetParam)(MediaTrack* track, int fx, int param, double val);
  5346. #endif
  5347.  
  5348. #if defined(REAPERAPI_WANT_TrackFX_SetParamNormalized) || !defined(REAPERAPI_MINIMAL)
  5349. REAPERAPI_DEF //==============================================
  5350. // TrackFX_SetParamNormalized
  5351.  
  5352.   bool (*TrackFX_SetParamNormalized)(MediaTrack* track, int fx, int param, double value);
  5353. #endif
  5354.  
  5355. #if defined(REAPERAPI_WANT_TrackFX_SetPreset) || !defined(REAPERAPI_MINIMAL)
  5356. REAPERAPI_DEF //==============================================
  5357. // TrackFX_SetPreset
  5358. // Activate a preset with the name shown in the REAPER dropdown. Full paths to .vstpreset files are also supported for VST3 plug-ins. See TrackFX_GetPreset.
  5359.  
  5360.   bool (*TrackFX_SetPreset)(MediaTrack* track, int fx, const char* presetname);
  5361. #endif
  5362.  
  5363. #if defined(REAPERAPI_WANT_TrackFX_SetPresetByIndex) || !defined(REAPERAPI_MINIMAL)
  5364. REAPERAPI_DEF //==============================================
  5365. // TrackFX_SetPresetByIndex
  5366. // Sets the preset idx, or the factory preset (idx==-2), or the default user preset (idx==-1). Returns true on success. See TrackFX_GetPresetIndex.
  5367.  
  5368.   bool (*TrackFX_SetPresetByIndex)(MediaTrack* track, int fx, int idx);
  5369. #endif
  5370.  
  5371. #if defined(REAPERAPI_WANT_TrackFX_Show) || !defined(REAPERAPI_MINIMAL)
  5372. REAPERAPI_DEF //==============================================
  5373. // TrackFX_Show
  5374. // showflag=0 for hidechain, =1 for show chain(index valid), =2 for hide floating window(index valid), =3 for show floating window (index valid)
  5375.  
  5376.   void (*TrackFX_Show)(MediaTrack* track, int index, int showFlag);
  5377. #endif
  5378.  
  5379. #if defined(REAPERAPI_WANT_TrackList_AdjustWindows) || !defined(REAPERAPI_MINIMAL)
  5380. REAPERAPI_DEF //==============================================
  5381. // TrackList_AdjustWindows
  5382.  
  5383.   void (*TrackList_AdjustWindows)(bool isMinor);
  5384. #endif
  5385.  
  5386. #if defined(REAPERAPI_WANT_TrackList_UpdateAllExternalSurfaces) || !defined(REAPERAPI_MINIMAL)
  5387. REAPERAPI_DEF //==============================================
  5388. // TrackList_UpdateAllExternalSurfaces
  5389.  
  5390.   void (*TrackList_UpdateAllExternalSurfaces)();
  5391. #endif
  5392.  
  5393. #if defined(REAPERAPI_WANT_Undo_BeginBlock) || !defined(REAPERAPI_MINIMAL)
  5394. REAPERAPI_DEF //==============================================
  5395. // Undo_BeginBlock
  5396. // call to start a new block
  5397.  
  5398.   void (*Undo_BeginBlock)();
  5399. #endif
  5400.  
  5401. #if defined(REAPERAPI_WANT_Undo_BeginBlock2) || !defined(REAPERAPI_MINIMAL)
  5402. REAPERAPI_DEF //==============================================
  5403. // Undo_BeginBlock2
  5404. // call to start a new block
  5405.  
  5406.   void (*Undo_BeginBlock2)(ReaProject* proj);
  5407. #endif
  5408.  
  5409. #if defined(REAPERAPI_WANT_Undo_CanRedo2) || !defined(REAPERAPI_MINIMAL)
  5410. REAPERAPI_DEF //==============================================
  5411. // Undo_CanRedo2
  5412. // returns string of next action,if able,NULL if not
  5413.  
  5414.   const char* (*Undo_CanRedo2)(ReaProject* proj);
  5415. #endif
  5416.  
  5417. #if defined(REAPERAPI_WANT_Undo_CanUndo2) || !defined(REAPERAPI_MINIMAL)
  5418. REAPERAPI_DEF //==============================================
  5419. // Undo_CanUndo2
  5420. // returns string of last action,if able,NULL if not
  5421.  
  5422.   const char* (*Undo_CanUndo2)(ReaProject* proj);
  5423. #endif
  5424.  
  5425. #if defined(REAPERAPI_WANT_Undo_DoRedo2) || !defined(REAPERAPI_MINIMAL)
  5426. REAPERAPI_DEF //==============================================
  5427. // Undo_DoRedo2
  5428. // nonzero if success
  5429.  
  5430.   int (*Undo_DoRedo2)(ReaProject* proj);
  5431. #endif
  5432.  
  5433. #if defined(REAPERAPI_WANT_Undo_DoUndo2) || !defined(REAPERAPI_MINIMAL)
  5434. REAPERAPI_DEF //==============================================
  5435. // Undo_DoUndo2
  5436. // nonzero if success
  5437.  
  5438.   int (*Undo_DoUndo2)(ReaProject* proj);
  5439. #endif
  5440.  
  5441. #if defined(REAPERAPI_WANT_Undo_EndBlock) || !defined(REAPERAPI_MINIMAL)
  5442. REAPERAPI_DEF //==============================================
  5443. // Undo_EndBlock
  5444. // call to end the block,with extra flags if any,and a description
  5445.  
  5446.   void (*Undo_EndBlock)(const char* descchange, int extraflags);
  5447. #endif
  5448.  
  5449. #if defined(REAPERAPI_WANT_Undo_EndBlock2) || !defined(REAPERAPI_MINIMAL)
  5450. REAPERAPI_DEF //==============================================
  5451. // Undo_EndBlock2
  5452. // call to end the block,with extra flags if any,and a description
  5453.  
  5454.   void (*Undo_EndBlock2)(ReaProject* proj, const char* descchange, int extraflags);
  5455. #endif
  5456.  
  5457. #if defined(REAPERAPI_WANT_Undo_OnStateChange) || !defined(REAPERAPI_MINIMAL)
  5458. REAPERAPI_DEF //==============================================
  5459. // Undo_OnStateChange
  5460. // limited state change to items
  5461.  
  5462.   void (*Undo_OnStateChange)(const char* descchange);
  5463. #endif
  5464.  
  5465. #if defined(REAPERAPI_WANT_Undo_OnStateChange2) || !defined(REAPERAPI_MINIMAL)
  5466. REAPERAPI_DEF //==============================================
  5467. // Undo_OnStateChange2
  5468. // limited state change to items
  5469.  
  5470.   void (*Undo_OnStateChange2)(ReaProject* proj, const char* descchange);
  5471. #endif
  5472.  
  5473. #if defined(REAPERAPI_WANT_Undo_OnStateChange_Item) || !defined(REAPERAPI_MINIMAL)
  5474. REAPERAPI_DEF //==============================================
  5475. // Undo_OnStateChange_Item
  5476.  
  5477.   void (*Undo_OnStateChange_Item)(ReaProject* proj, const char* name, MediaItem* item);
  5478. #endif
  5479.  
  5480. #if defined(REAPERAPI_WANT_Undo_OnStateChangeEx) || !defined(REAPERAPI_MINIMAL)
  5481. REAPERAPI_DEF //==============================================
  5482. // Undo_OnStateChangeEx
  5483. // trackparm=-1 by default,or if updating one fx chain,you can specify track index
  5484.  
  5485.   void (*Undo_OnStateChangeEx)(const char* descchange, int whichStates, int trackparm);
  5486. #endif
  5487.  
  5488. #if defined(REAPERAPI_WANT_Undo_OnStateChangeEx2) || !defined(REAPERAPI_MINIMAL)
  5489. REAPERAPI_DEF //==============================================
  5490. // Undo_OnStateChangeEx2
  5491. // trackparm=-1 by default,or if updating one fx chain,you can specify track index
  5492.  
  5493.   void (*Undo_OnStateChangeEx2)(ReaProject* proj, const char* descchange, int whichStates, int trackparm);
  5494. #endif
  5495.  
  5496. #if defined(REAPERAPI_WANT_update_disk_counters) || !defined(REAPERAPI_MINIMAL)
  5497. REAPERAPI_DEF //==============================================
  5498. // update_disk_counters
  5499. // Updates disk I/O statistics with bytes transferred since last call.
  5500.  
  5501.   void (*update_disk_counters)(int readamt, int writeamt);
  5502. #endif
  5503.  
  5504. #if defined(REAPERAPI_WANT_UpdateArrange) || !defined(REAPERAPI_MINIMAL)
  5505. REAPERAPI_DEF //==============================================
  5506. // UpdateArrange
  5507. // Redraw the arrange view
  5508.  
  5509.   void (*UpdateArrange)();
  5510. #endif
  5511.  
  5512. #if defined(REAPERAPI_WANT_UpdateItemInProject) || !defined(REAPERAPI_MINIMAL)
  5513. REAPERAPI_DEF //==============================================
  5514. // UpdateItemInProject
  5515.  
  5516.   void (*UpdateItemInProject)(MediaItem* item);
  5517. #endif
  5518.  
  5519. #if defined(REAPERAPI_WANT_UpdateTimeline) || !defined(REAPERAPI_MINIMAL)
  5520. REAPERAPI_DEF //==============================================
  5521. // UpdateTimeline
  5522. // Redraw the arrange view and ruler
  5523.  
  5524.   void (*UpdateTimeline)();
  5525. #endif
  5526.  
  5527. #if defined(REAPERAPI_WANT_ValidatePtr) || !defined(REAPERAPI_MINIMAL)
  5528. REAPERAPI_DEF //==============================================
  5529. // ValidatePtr
  5530. // returns true if the pointer is a valid object of the right type
  5531.  
  5532.   bool (*ValidatePtr)(void* pointer, const char* ctypename);
  5533. #endif
  5534.  
  5535. #if defined(REAPERAPI_WANT_ViewPrefs) || !defined(REAPERAPI_MINIMAL)
  5536. REAPERAPI_DEF //==============================================
  5537. // ViewPrefs
  5538. // Opens the prefs to a page, use pageByName if page is 0.
  5539.  
  5540.   void (*ViewPrefs)(int page, const char* pageByName);
  5541. #endif
  5542.  
  5543. #if defined(REAPERAPI_WANT_WDL_VirtualWnd_ScaledBlitBG) || !defined(REAPERAPI_MINIMAL)
  5544. REAPERAPI_DEF //==============================================
  5545. // WDL_VirtualWnd_ScaledBlitBG
  5546.  
  5547.   bool (*WDL_VirtualWnd_ScaledBlitBG)(LICE_IBitmap* dest, WDL_VirtualWnd_BGCfg* src, int destx, int desty, int destw, int desth, int clipx, int clipy, int clipw, int cliph, float alpha, int mode);
  5548. #endif
  5549.  
  5550. #ifdef REAPERAPI_IMPLEMENT
  5551.   int REAPERAPI_LoadAPI(void *(*getAPI)(const char *))
  5552.   {
  5553.     static const struct { void **dest; const char *name; } table[]={
  5554.       #if defined(REAPERAPI_WANT___mergesort) || !defined(REAPERAPI_MINIMAL)
  5555.         {(void**)&__mergesort,"__mergesort"},
  5556.       #endif
  5557.       #if defined(REAPERAPI_WANT_AddCustomizableMenu) || !defined(REAPERAPI_MINIMAL)
  5558.         {(void**)&AddCustomizableMenu,"AddCustomizableMenu"},
  5559.       #endif
  5560.       #if defined(REAPERAPI_WANT_AddExtensionsMainMenu) || !defined(REAPERAPI_MINIMAL)
  5561.         {(void**)&AddExtensionsMainMenu,"AddExtensionsMainMenu"},
  5562.       #endif
  5563.       #if defined(REAPERAPI_WANT_AddMediaItemToTrack) || !defined(REAPERAPI_MINIMAL)
  5564.         {(void**)&AddMediaItemToTrack,"AddMediaItemToTrack"},
  5565.       #endif
  5566.       #if defined(REAPERAPI_WANT_AddProjectMarker) || !defined(REAPERAPI_MINIMAL)
  5567.         {(void**)&AddProjectMarker,"AddProjectMarker"},
  5568.       #endif
  5569.       #if defined(REAPERAPI_WANT_AddProjectMarker2) || !defined(REAPERAPI_MINIMAL)
  5570.         {(void**)&AddProjectMarker2,"AddProjectMarker2"},
  5571.       #endif
  5572.       #if defined(REAPERAPI_WANT_AddTakeToMediaItem) || !defined(REAPERAPI_MINIMAL)
  5573.         {(void**)&AddTakeToMediaItem,"AddTakeToMediaItem"},
  5574.       #endif
  5575.       #if defined(REAPERAPI_WANT_AddTempoTimeSigMarker) || !defined(REAPERAPI_MINIMAL)
  5576.         {(void**)&AddTempoTimeSigMarker,"AddTempoTimeSigMarker"},
  5577.       #endif
  5578.       #if defined(REAPERAPI_WANT_adjustZoom) || !defined(REAPERAPI_MINIMAL)
  5579.         {(void**)&adjustZoom,"adjustZoom"},
  5580.       #endif
  5581.       #if defined(REAPERAPI_WANT_AnyTrackSolo) || !defined(REAPERAPI_MINIMAL)
  5582.         {(void**)&AnyTrackSolo,"AnyTrackSolo"},
  5583.       #endif
  5584.       #if defined(REAPERAPI_WANT_APITest) || !defined(REAPERAPI_MINIMAL)
  5585.         {(void**)&APITest,"APITest"},
  5586.       #endif
  5587.       #if defined(REAPERAPI_WANT_ApplyNudge) || !defined(REAPERAPI_MINIMAL)
  5588.         {(void**)&ApplyNudge,"ApplyNudge"},
  5589.       #endif
  5590.       #if defined(REAPERAPI_WANT_Audio_IsPreBuffer) || !defined(REAPERAPI_MINIMAL)
  5591.         {(void**)&Audio_IsPreBuffer,"Audio_IsPreBuffer"},
  5592.       #endif
  5593.       #if defined(REAPERAPI_WANT_Audio_IsRunning) || !defined(REAPERAPI_MINIMAL)
  5594.         {(void**)&Audio_IsRunning,"Audio_IsRunning"},
  5595.       #endif
  5596.       #if defined(REAPERAPI_WANT_Audio_RegHardwareHook) || !defined(REAPERAPI_MINIMAL)
  5597.         {(void**)&Audio_RegHardwareHook,"Audio_RegHardwareHook"},
  5598.       #endif
  5599.       #if defined(REAPERAPI_WANT_AudioAccessorValidateState) || !defined(REAPERAPI_MINIMAL)
  5600.         {(void**)&AudioAccessorValidateState,"AudioAccessorValidateState"},
  5601.       #endif
  5602.       #if defined(REAPERAPI_WANT_BypassFxAllTracks) || !defined(REAPERAPI_MINIMAL)
  5603.         {(void**)&BypassFxAllTracks,"BypassFxAllTracks"},
  5604.       #endif
  5605.       #if defined(REAPERAPI_WANT_CalculatePeaks) || !defined(REAPERAPI_MINIMAL)
  5606.         {(void**)&CalculatePeaks,"CalculatePeaks"},
  5607.       #endif
  5608.       #if defined(REAPERAPI_WANT_CalculatePeaksFloatSrcPtr) || !defined(REAPERAPI_MINIMAL)
  5609.         {(void**)&CalculatePeaksFloatSrcPtr,"CalculatePeaksFloatSrcPtr"},
  5610.       #endif
  5611.       #if defined(REAPERAPI_WANT_ClearAllRecArmed) || !defined(REAPERAPI_MINIMAL)
  5612.         {(void**)&ClearAllRecArmed,"ClearAllRecArmed"},
  5613.       #endif
  5614.       #if defined(REAPERAPI_WANT_ClearConsole) || !defined(REAPERAPI_MINIMAL)
  5615.         {(void**)&ClearConsole,"ClearConsole"},
  5616.       #endif
  5617.       #if defined(REAPERAPI_WANT_ClearPeakCache) || !defined(REAPERAPI_MINIMAL)
  5618.         {(void**)&ClearPeakCache,"ClearPeakCache"},
  5619.       #endif
  5620.       #if defined(REAPERAPI_WANT_ColorFromNative) || !defined(REAPERAPI_MINIMAL)
  5621.         {(void**)&ColorFromNative,"ColorFromNative"},
  5622.       #endif
  5623.       #if defined(REAPERAPI_WANT_ColorToNative) || !defined(REAPERAPI_MINIMAL)
  5624.         {(void**)&ColorToNative,"ColorToNative"},
  5625.       #endif
  5626.       #if defined(REAPERAPI_WANT_CountActionShortcuts) || !defined(REAPERAPI_MINIMAL)
  5627.         {(void**)&CountActionShortcuts,"CountActionShortcuts"},
  5628.       #endif
  5629.       #if defined(REAPERAPI_WANT_CountEnvelopePoints) || !defined(REAPERAPI_MINIMAL)
  5630.         {(void**)&CountEnvelopePoints,"CountEnvelopePoints"},
  5631.       #endif
  5632.       #if defined(REAPERAPI_WANT_CountMediaItems) || !defined(REAPERAPI_MINIMAL)
  5633.         {(void**)&CountMediaItems,"CountMediaItems"},
  5634.       #endif
  5635.       #if defined(REAPERAPI_WANT_CountProjectMarkers) || !defined(REAPERAPI_MINIMAL)
  5636.         {(void**)&CountProjectMarkers,"CountProjectMarkers"},
  5637.       #endif
  5638.       #if defined(REAPERAPI_WANT_CountSelectedMediaItems) || !defined(REAPERAPI_MINIMAL)
  5639.         {(void**)&CountSelectedMediaItems,"CountSelectedMediaItems"},
  5640.       #endif
  5641.       #if defined(REAPERAPI_WANT_CountSelectedTracks) || !defined(REAPERAPI_MINIMAL)
  5642.         {(void**)&CountSelectedTracks,"CountSelectedTracks"},
  5643.       #endif
  5644.       #if defined(REAPERAPI_WANT_CountTakeEnvelopes) || !defined(REAPERAPI_MINIMAL)
  5645.         {(void**)&CountTakeEnvelopes,"CountTakeEnvelopes"},
  5646.       #endif
  5647.       #if defined(REAPERAPI_WANT_CountTakes) || !defined(REAPERAPI_MINIMAL)
  5648.         {(void**)&CountTakes,"CountTakes"},
  5649.       #endif
  5650.       #if defined(REAPERAPI_WANT_CountTCPFXParms) || !defined(REAPERAPI_MINIMAL)
  5651.         {(void**)&CountTCPFXParms,"CountTCPFXParms"},
  5652.       #endif
  5653.       #if defined(REAPERAPI_WANT_CountTempoTimeSigMarkers) || !defined(REAPERAPI_MINIMAL)
  5654.         {(void**)&CountTempoTimeSigMarkers,"CountTempoTimeSigMarkers"},
  5655.       #endif
  5656.       #if defined(REAPERAPI_WANT_CountTrackEnvelopes) || !defined(REAPERAPI_MINIMAL)
  5657.         {(void**)&CountTrackEnvelopes,"CountTrackEnvelopes"},
  5658.       #endif
  5659.       #if defined(REAPERAPI_WANT_CountTrackMediaItems) || !defined(REAPERAPI_MINIMAL)
  5660.         {(void**)&CountTrackMediaItems,"CountTrackMediaItems"},
  5661.       #endif
  5662.       #if defined(REAPERAPI_WANT_CountTracks) || !defined(REAPERAPI_MINIMAL)
  5663.         {(void**)&CountTracks,"CountTracks"},
  5664.       #endif
  5665.       #if defined(REAPERAPI_WANT_CreateLocalOscHandler) || !defined(REAPERAPI_MINIMAL)
  5666.         {(void**)&CreateLocalOscHandler,"CreateLocalOscHandler"},
  5667.       #endif
  5668.       #if defined(REAPERAPI_WANT_CreateMIDIInput) || !defined(REAPERAPI_MINIMAL)
  5669.         {(void**)&CreateMIDIInput,"CreateMIDIInput"},
  5670.       #endif
  5671.       #if defined(REAPERAPI_WANT_CreateMIDIOutput) || !defined(REAPERAPI_MINIMAL)
  5672.         {(void**)&CreateMIDIOutput,"CreateMIDIOutput"},
  5673.       #endif
  5674.       #if defined(REAPERAPI_WANT_CreateNewMIDIItemInProj) || !defined(REAPERAPI_MINIMAL)
  5675.         {(void**)&CreateNewMIDIItemInProj,"CreateNewMIDIItemInProj"},
  5676.       #endif
  5677.       #if defined(REAPERAPI_WANT_CreateTakeAudioAccessor) || !defined(REAPERAPI_MINIMAL)
  5678.         {(void**)&CreateTakeAudioAccessor,"CreateTakeAudioAccessor"},
  5679.       #endif
  5680.       #if defined(REAPERAPI_WANT_CreateTrackAudioAccessor) || !defined(REAPERAPI_MINIMAL)
  5681.         {(void**)&CreateTrackAudioAccessor,"CreateTrackAudioAccessor"},
  5682.       #endif
  5683.       #if defined(REAPERAPI_WANT_CSurf_FlushUndo) || !defined(REAPERAPI_MINIMAL)
  5684.         {(void**)&CSurf_FlushUndo,"CSurf_FlushUndo"},
  5685.       #endif
  5686.       #if defined(REAPERAPI_WANT_CSurf_GetTouchState) || !defined(REAPERAPI_MINIMAL)
  5687.         {(void**)&CSurf_GetTouchState,"CSurf_GetTouchState"},
  5688.       #endif
  5689.       #if defined(REAPERAPI_WANT_CSurf_GoEnd) || !defined(REAPERAPI_MINIMAL)
  5690.         {(void**)&CSurf_GoEnd,"CSurf_GoEnd"},
  5691.       #endif
  5692.       #if defined(REAPERAPI_WANT_CSurf_GoStart) || !defined(REAPERAPI_MINIMAL)
  5693.         {(void**)&CSurf_GoStart,"CSurf_GoStart"},
  5694.       #endif
  5695.       #if defined(REAPERAPI_WANT_CSurf_NumTracks) || !defined(REAPERAPI_MINIMAL)
  5696.         {(void**)&CSurf_NumTracks,"CSurf_NumTracks"},
  5697.       #endif
  5698.       #if defined(REAPERAPI_WANT_CSurf_OnArrow) || !defined(REAPERAPI_MINIMAL)
  5699.         {(void**)&CSurf_OnArrow,"CSurf_OnArrow"},
  5700.       #endif
  5701.       #if defined(REAPERAPI_WANT_CSurf_OnFwd) || !defined(REAPERAPI_MINIMAL)
  5702.         {(void**)&CSurf_OnFwd,"CSurf_OnFwd"},
  5703.       #endif
  5704.       #if defined(REAPERAPI_WANT_CSurf_OnFXChange) || !defined(REAPERAPI_MINIMAL)
  5705.         {(void**)&CSurf_OnFXChange,"CSurf_OnFXChange"},
  5706.       #endif
  5707.       #if defined(REAPERAPI_WANT_CSurf_OnInputMonitorChange) || !defined(REAPERAPI_MINIMAL)
  5708.         {(void**)&CSurf_OnInputMonitorChange,"CSurf_OnInputMonitorChange"},
  5709.       #endif
  5710.       #if defined(REAPERAPI_WANT_CSurf_OnInputMonitorChangeEx) || !defined(REAPERAPI_MINIMAL)
  5711.         {(void**)&CSurf_OnInputMonitorChangeEx,"CSurf_OnInputMonitorChangeEx"},
  5712.       #endif
  5713.       #if defined(REAPERAPI_WANT_CSurf_OnMuteChange) || !defined(REAPERAPI_MINIMAL)
  5714.         {(void**)&CSurf_OnMuteChange,"CSurf_OnMuteChange"},
  5715.       #endif
  5716.       #if defined(REAPERAPI_WANT_CSurf_OnMuteChangeEx) || !defined(REAPERAPI_MINIMAL)
  5717.         {(void**)&CSurf_OnMuteChangeEx,"CSurf_OnMuteChangeEx"},
  5718.       #endif
  5719.       #if defined(REAPERAPI_WANT_CSurf_OnOscControlMessage) || !defined(REAPERAPI_MINIMAL)
  5720.         {(void**)&CSurf_OnOscControlMessage,"CSurf_OnOscControlMessage"},
  5721.       #endif
  5722.       #if defined(REAPERAPI_WANT_CSurf_OnPanChange) || !defined(REAPERAPI_MINIMAL)
  5723.         {(void**)&CSurf_OnPanChange,"CSurf_OnPanChange"},
  5724.       #endif
  5725.       #if defined(REAPERAPI_WANT_CSurf_OnPanChangeEx) || !defined(REAPERAPI_MINIMAL)
  5726.         {(void**)&CSurf_OnPanChangeEx,"CSurf_OnPanChangeEx"},
  5727.       #endif
  5728.       #if defined(REAPERAPI_WANT_CSurf_OnPause) || !defined(REAPERAPI_MINIMAL)
  5729.         {(void**)&CSurf_OnPause,"CSurf_OnPause"},
  5730.       #endif
  5731.       #if defined(REAPERAPI_WANT_CSurf_OnPlay) || !defined(REAPERAPI_MINIMAL)
  5732.         {(void**)&CSurf_OnPlay,"CSurf_OnPlay"},
  5733.       #endif
  5734.       #if defined(REAPERAPI_WANT_CSurf_OnPlayRateChange) || !defined(REAPERAPI_MINIMAL)
  5735.         {(void**)&CSurf_OnPlayRateChange,"CSurf_OnPlayRateChange"},
  5736.       #endif
  5737.       #if defined(REAPERAPI_WANT_CSurf_OnRecArmChange) || !defined(REAPERAPI_MINIMAL)
  5738.         {(void**)&CSurf_OnRecArmChange,"CSurf_OnRecArmChange"},
  5739.       #endif
  5740.       #if defined(REAPERAPI_WANT_CSurf_OnRecArmChangeEx) || !defined(REAPERAPI_MINIMAL)
  5741.         {(void**)&CSurf_OnRecArmChangeEx,"CSurf_OnRecArmChangeEx"},
  5742.       #endif
  5743.       #if defined(REAPERAPI_WANT_CSurf_OnRecord) || !defined(REAPERAPI_MINIMAL)
  5744.         {(void**)&CSurf_OnRecord,"CSurf_OnRecord"},
  5745.       #endif
  5746.       #if defined(REAPERAPI_WANT_CSurf_OnRecvPanChange) || !defined(REAPERAPI_MINIMAL)
  5747.         {(void**)&CSurf_OnRecvPanChange,"CSurf_OnRecvPanChange"},
  5748.       #endif
  5749.       #if defined(REAPERAPI_WANT_CSurf_OnRecvVolumeChange) || !defined(REAPERAPI_MINIMAL)
  5750.         {(void**)&CSurf_OnRecvVolumeChange,"CSurf_OnRecvVolumeChange"},
  5751.       #endif
  5752.       #if defined(REAPERAPI_WANT_CSurf_OnRew) || !defined(REAPERAPI_MINIMAL)
  5753.         {(void**)&CSurf_OnRew,"CSurf_OnRew"},
  5754.       #endif
  5755.       #if defined(REAPERAPI_WANT_CSurf_OnRewFwd) || !defined(REAPERAPI_MINIMAL)
  5756.         {(void**)&CSurf_OnRewFwd,"CSurf_OnRewFwd"},
  5757.       #endif
  5758.       #if defined(REAPERAPI_WANT_CSurf_OnScroll) || !defined(REAPERAPI_MINIMAL)
  5759.         {(void**)&CSurf_OnScroll,"CSurf_OnScroll"},
  5760.       #endif
  5761.       #if defined(REAPERAPI_WANT_CSurf_OnSelectedChange) || !defined(REAPERAPI_MINIMAL)
  5762.         {(void**)&CSurf_OnSelectedChange,"CSurf_OnSelectedChange"},
  5763.       #endif
  5764.       #if defined(REAPERAPI_WANT_CSurf_OnSendPanChange) || !defined(REAPERAPI_MINIMAL)
  5765.         {(void**)&CSurf_OnSendPanChange,"CSurf_OnSendPanChange"},
  5766.       #endif
  5767.       #if defined(REAPERAPI_WANT_CSurf_OnSendVolumeChange) || !defined(REAPERAPI_MINIMAL)
  5768.         {(void**)&CSurf_OnSendVolumeChange,"CSurf_OnSendVolumeChange"},
  5769.       #endif
  5770.       #if defined(REAPERAPI_WANT_CSurf_OnSoloChange) || !defined(REAPERAPI_MINIMAL)
  5771.         {(void**)&CSurf_OnSoloChange,"CSurf_OnSoloChange"},
  5772.       #endif
  5773.       #if defined(REAPERAPI_WANT_CSurf_OnSoloChangeEx) || !defined(REAPERAPI_MINIMAL)
  5774.         {(void**)&CSurf_OnSoloChangeEx,"CSurf_OnSoloChangeEx"},
  5775.       #endif
  5776.       #if defined(REAPERAPI_WANT_CSurf_OnStop) || !defined(REAPERAPI_MINIMAL)
  5777.         {(void**)&CSurf_OnStop,"CSurf_OnStop"},
  5778.       #endif
  5779.       #if defined(REAPERAPI_WANT_CSurf_OnTempoChange) || !defined(REAPERAPI_MINIMAL)
  5780.         {(void**)&CSurf_OnTempoChange,"CSurf_OnTempoChange"},
  5781.       #endif
  5782.       #if defined(REAPERAPI_WANT_CSurf_OnTrackSelection) || !defined(REAPERAPI_MINIMAL)
  5783.         {(void**)&CSurf_OnTrackSelection,"CSurf_OnTrackSelection"},
  5784.       #endif
  5785.       #if defined(REAPERAPI_WANT_CSurf_OnVolumeChange) || !defined(REAPERAPI_MINIMAL)
  5786.         {(void**)&CSurf_OnVolumeChange,"CSurf_OnVolumeChange"},
  5787.       #endif
  5788.       #if defined(REAPERAPI_WANT_CSurf_OnVolumeChangeEx) || !defined(REAPERAPI_MINIMAL)
  5789.         {(void**)&CSurf_OnVolumeChangeEx,"CSurf_OnVolumeChangeEx"},
  5790.       #endif
  5791.       #if defined(REAPERAPI_WANT_CSurf_OnWidthChange) || !defined(REAPERAPI_MINIMAL)
  5792.         {(void**)&CSurf_OnWidthChange,"CSurf_OnWidthChange"},
  5793.       #endif
  5794.       #if defined(REAPERAPI_WANT_CSurf_OnWidthChangeEx) || !defined(REAPERAPI_MINIMAL)
  5795.         {(void**)&CSurf_OnWidthChangeEx,"CSurf_OnWidthChangeEx"},
  5796.       #endif
  5797.       #if defined(REAPERAPI_WANT_CSurf_OnZoom) || !defined(REAPERAPI_MINIMAL)
  5798.         {(void**)&CSurf_OnZoom,"CSurf_OnZoom"},
  5799.       #endif
  5800.       #if defined(REAPERAPI_WANT_CSurf_ResetAllCachedVolPanStates) || !defined(REAPERAPI_MINIMAL)
  5801.         {(void**)&CSurf_ResetAllCachedVolPanStates,"CSurf_ResetAllCachedVolPanStates"},
  5802.       #endif
  5803.       #if defined(REAPERAPI_WANT_CSurf_ScrubAmt) || !defined(REAPERAPI_MINIMAL)
  5804.         {(void**)&CSurf_ScrubAmt,"CSurf_ScrubAmt"},
  5805.       #endif
  5806.       #if defined(REAPERAPI_WANT_CSurf_SetAutoMode) || !defined(REAPERAPI_MINIMAL)
  5807.         {(void**)&CSurf_SetAutoMode,"CSurf_SetAutoMode"},
  5808.       #endif
  5809.       #if defined(REAPERAPI_WANT_CSurf_SetPlayState) || !defined(REAPERAPI_MINIMAL)
  5810.         {(void**)&CSurf_SetPlayState,"CSurf_SetPlayState"},
  5811.       #endif
  5812.       #if defined(REAPERAPI_WANT_CSurf_SetRepeatState) || !defined(REAPERAPI_MINIMAL)
  5813.         {(void**)&CSurf_SetRepeatState,"CSurf_SetRepeatState"},
  5814.       #endif
  5815.       #if defined(REAPERAPI_WANT_CSurf_SetSurfaceMute) || !defined(REAPERAPI_MINIMAL)
  5816.         {(void**)&CSurf_SetSurfaceMute,"CSurf_SetSurfaceMute"},
  5817.       #endif
  5818.       #if defined(REAPERAPI_WANT_CSurf_SetSurfacePan) || !defined(REAPERAPI_MINIMAL)
  5819.         {(void**)&CSurf_SetSurfacePan,"CSurf_SetSurfacePan"},
  5820.       #endif
  5821.       #if defined(REAPERAPI_WANT_CSurf_SetSurfaceRecArm) || !defined(REAPERAPI_MINIMAL)
  5822.         {(void**)&CSurf_SetSurfaceRecArm,"CSurf_SetSurfaceRecArm"},
  5823.       #endif
  5824.       #if defined(REAPERAPI_WANT_CSurf_SetSurfaceSelected) || !defined(REAPERAPI_MINIMAL)
  5825.         {(void**)&CSurf_SetSurfaceSelected,"CSurf_SetSurfaceSelected"},
  5826.       #endif
  5827.       #if defined(REAPERAPI_WANT_CSurf_SetSurfaceSolo) || !defined(REAPERAPI_MINIMAL)
  5828.         {(void**)&CSurf_SetSurfaceSolo,"CSurf_SetSurfaceSolo"},
  5829.       #endif
  5830.       #if defined(REAPERAPI_WANT_CSurf_SetSurfaceVolume) || !defined(REAPERAPI_MINIMAL)
  5831.         {(void**)&CSurf_SetSurfaceVolume,"CSurf_SetSurfaceVolume"},
  5832.       #endif
  5833.       #if defined(REAPERAPI_WANT_CSurf_SetTrackListChange) || !defined(REAPERAPI_MINIMAL)
  5834.         {(void**)&CSurf_SetTrackListChange,"CSurf_SetTrackListChange"},
  5835.       #endif
  5836.       #if defined(REAPERAPI_WANT_CSurf_TrackFromID) || !defined(REAPERAPI_MINIMAL)
  5837.         {(void**)&CSurf_TrackFromID,"CSurf_TrackFromID"},
  5838.       #endif
  5839.       #if defined(REAPERAPI_WANT_CSurf_TrackToID) || !defined(REAPERAPI_MINIMAL)
  5840.         {(void**)&CSurf_TrackToID,"CSurf_TrackToID"},
  5841.       #endif
  5842.       #if defined(REAPERAPI_WANT_DB2SLIDER) || !defined(REAPERAPI_MINIMAL)
  5843.         {(void**)&DB2SLIDER,"DB2SLIDER"},
  5844.       #endif
  5845.       #if defined(REAPERAPI_WANT_DeleteActionShortcut) || !defined(REAPERAPI_MINIMAL)
  5846.         {(void**)&DeleteActionShortcut,"DeleteActionShortcut"},
  5847.       #endif
  5848.       #if defined(REAPERAPI_WANT_DeleteEnvelopePointRange) || !defined(REAPERAPI_MINIMAL)
  5849.         {(void**)&DeleteEnvelopePointRange,"DeleteEnvelopePointRange"},
  5850.       #endif
  5851.       #if defined(REAPERAPI_WANT_DeleteExtState) || !defined(REAPERAPI_MINIMAL)
  5852.         {(void**)&DeleteExtState,"DeleteExtState"},
  5853.       #endif
  5854.       #if defined(REAPERAPI_WANT_DeleteProjectMarker) || !defined(REAPERAPI_MINIMAL)
  5855.         {(void**)&DeleteProjectMarker,"DeleteProjectMarker"},
  5856.       #endif
  5857.       #if defined(REAPERAPI_WANT_DeleteProjectMarkerByIndex) || !defined(REAPERAPI_MINIMAL)
  5858.         {(void**)&DeleteProjectMarkerByIndex,"DeleteProjectMarkerByIndex"},
  5859.       #endif
  5860.       #if defined(REAPERAPI_WANT_DeleteTakeStretchMarkers) || !defined(REAPERAPI_MINIMAL)
  5861.         {(void**)&DeleteTakeStretchMarkers,"DeleteTakeStretchMarkers"},
  5862.       #endif
  5863.       #if defined(REAPERAPI_WANT_DeleteTempoTimeSigMarker) || !defined(REAPERAPI_MINIMAL)
  5864.         {(void**)&DeleteTempoTimeSigMarker,"DeleteTempoTimeSigMarker"},
  5865.       #endif
  5866.       #if defined(REAPERAPI_WANT_DeleteTrack) || !defined(REAPERAPI_MINIMAL)
  5867.         {(void**)&DeleteTrack,"DeleteTrack"},
  5868.       #endif
  5869.       #if defined(REAPERAPI_WANT_DeleteTrackMediaItem) || !defined(REAPERAPI_MINIMAL)
  5870.         {(void**)&DeleteTrackMediaItem,"DeleteTrackMediaItem"},
  5871.       #endif
  5872.       #if defined(REAPERAPI_WANT_DestroyAudioAccessor) || !defined(REAPERAPI_MINIMAL)
  5873.         {(void**)&DestroyAudioAccessor,"DestroyAudioAccessor"},
  5874.       #endif
  5875.       #if defined(REAPERAPI_WANT_DestroyLocalOscHandler) || !defined(REAPERAPI_MINIMAL)
  5876.         {(void**)&DestroyLocalOscHandler,"DestroyLocalOscHandler"},
  5877.       #endif
  5878.       #if defined(REAPERAPI_WANT_DoActionShortcutDialog) || !defined(REAPERAPI_MINIMAL)
  5879.         {(void**)&DoActionShortcutDialog,"DoActionShortcutDialog"},
  5880.       #endif
  5881.       #if defined(REAPERAPI_WANT_Dock_UpdateDockID) || !defined(REAPERAPI_MINIMAL)
  5882.         {(void**)&Dock_UpdateDockID,"Dock_UpdateDockID"},
  5883.       #endif
  5884.       #if defined(REAPERAPI_WANT_DockIsChildOfDock) || !defined(REAPERAPI_MINIMAL)
  5885.         {(void**)&DockIsChildOfDock,"DockIsChildOfDock"},
  5886.       #endif
  5887.       #if defined(REAPERAPI_WANT_DockWindowActivate) || !defined(REAPERAPI_MINIMAL)
  5888.         {(void**)&DockWindowActivate,"DockWindowActivate"},
  5889.       #endif
  5890.       #if defined(REAPERAPI_WANT_DockWindowAdd) || !defined(REAPERAPI_MINIMAL)
  5891.         {(void**)&DockWindowAdd,"DockWindowAdd"},
  5892.       #endif
  5893.       #if defined(REAPERAPI_WANT_DockWindowAddEx) || !defined(REAPERAPI_MINIMAL)
  5894.         {(void**)&DockWindowAddEx,"DockWindowAddEx"},
  5895.       #endif
  5896.       #if defined(REAPERAPI_WANT_DockWindowRefresh) || !defined(REAPERAPI_MINIMAL)
  5897.         {(void**)&DockWindowRefresh,"DockWindowRefresh"},
  5898.       #endif
  5899.       #if defined(REAPERAPI_WANT_DockWindowRefreshForHWND) || !defined(REAPERAPI_MINIMAL)
  5900.         {(void**)&DockWindowRefreshForHWND,"DockWindowRefreshForHWND"},
  5901.       #endif
  5902.       #if defined(REAPERAPI_WANT_DockWindowRemove) || !defined(REAPERAPI_MINIMAL)
  5903.         {(void**)&DockWindowRemove,"DockWindowRemove"},
  5904.       #endif
  5905.       #if defined(REAPERAPI_WANT_DuplicateCustomizableMenu) || !defined(REAPERAPI_MINIMAL)
  5906.         {(void**)&DuplicateCustomizableMenu,"DuplicateCustomizableMenu"},
  5907.       #endif
  5908.       #if defined(REAPERAPI_WANT_EditTempoTimeSigMarker) || !defined(REAPERAPI_MINIMAL)
  5909.         {(void**)&EditTempoTimeSigMarker,"EditTempoTimeSigMarker"},
  5910.       #endif
  5911.       #if defined(REAPERAPI_WANT_EnsureNotCompletelyOffscreen) || !defined(REAPERAPI_MINIMAL)
  5912.         {(void**)&EnsureNotCompletelyOffscreen,"EnsureNotCompletelyOffscreen"},
  5913.       #endif
  5914.       #if defined(REAPERAPI_WANT_EnumerateFiles) || !defined(REAPERAPI_MINIMAL)
  5915.         {(void**)&EnumerateFiles,"EnumerateFiles"},
  5916.       #endif
  5917.       #if defined(REAPERAPI_WANT_EnumerateSubdirectories) || !defined(REAPERAPI_MINIMAL)
  5918.         {(void**)&EnumerateSubdirectories,"EnumerateSubdirectories"},
  5919.       #endif
  5920.       #if defined(REAPERAPI_WANT_EnumPitchShiftModes) || !defined(REAPERAPI_MINIMAL)
  5921.         {(void**)&EnumPitchShiftModes,"EnumPitchShiftModes"},
  5922.       #endif
  5923.       #if defined(REAPERAPI_WANT_EnumPitchShiftSubModes) || !defined(REAPERAPI_MINIMAL)
  5924.         {(void**)&EnumPitchShiftSubModes,"EnumPitchShiftSubModes"},
  5925.       #endif
  5926.       #if defined(REAPERAPI_WANT_EnumProjectMarkers) || !defined(REAPERAPI_MINIMAL)
  5927.         {(void**)&EnumProjectMarkers,"EnumProjectMarkers"},
  5928.       #endif
  5929.       #if defined(REAPERAPI_WANT_EnumProjectMarkers2) || !defined(REAPERAPI_MINIMAL)
  5930.         {(void**)&EnumProjectMarkers2,"EnumProjectMarkers2"},
  5931.       #endif
  5932.       #if defined(REAPERAPI_WANT_EnumProjectMarkers3) || !defined(REAPERAPI_MINIMAL)
  5933.         {(void**)&EnumProjectMarkers3,"EnumProjectMarkers3"},
  5934.       #endif
  5935.       #if defined(REAPERAPI_WANT_EnumProjects) || !defined(REAPERAPI_MINIMAL)
  5936.         {(void**)&EnumProjects,"EnumProjects"},
  5937.       #endif
  5938.       #if defined(REAPERAPI_WANT_EnumProjExtState) || !defined(REAPERAPI_MINIMAL)
  5939.         {(void**)&EnumProjExtState,"EnumProjExtState"},
  5940.       #endif
  5941.       #if defined(REAPERAPI_WANT_EnumRegionRenderMatrix) || !defined(REAPERAPI_MINIMAL)
  5942.         {(void**)&EnumRegionRenderMatrix,"EnumRegionRenderMatrix"},
  5943.       #endif
  5944.       #if defined(REAPERAPI_WANT_EnumTrackMIDIProgramNames) || !defined(REAPERAPI_MINIMAL)
  5945.         {(void**)&EnumTrackMIDIProgramNames,"EnumTrackMIDIProgramNames"},
  5946.       #endif
  5947.       #if defined(REAPERAPI_WANT_EnumTrackMIDIProgramNamesEx) || !defined(REAPERAPI_MINIMAL)
  5948.         {(void**)&EnumTrackMIDIProgramNamesEx,"EnumTrackMIDIProgramNamesEx"},
  5949.       #endif
  5950.       #if defined(REAPERAPI_WANT_Envelope_Evaluate) || !defined(REAPERAPI_MINIMAL)
  5951.         {(void**)&Envelope_Evaluate,"Envelope_Evaluate"},
  5952.       #endif
  5953.       #if defined(REAPERAPI_WANT_Envelope_SortPoints) || !defined(REAPERAPI_MINIMAL)
  5954.         {(void**)&Envelope_SortPoints,"Envelope_SortPoints"},
  5955.       #endif
  5956.       #if defined(REAPERAPI_WANT_file_exists) || !defined(REAPERAPI_MINIMAL)
  5957.         {(void**)&file_exists,"file_exists"},
  5958.       #endif
  5959.       #if defined(REAPERAPI_WANT_FindTempoTimeSigMarker) || !defined(REAPERAPI_MINIMAL)
  5960.         {(void**)&FindTempoTimeSigMarker,"FindTempoTimeSigMarker"},
  5961.       #endif
  5962.       #if defined(REAPERAPI_WANT_format_timestr) || !defined(REAPERAPI_MINIMAL)
  5963.         {(void**)&format_timestr,"format_timestr"},
  5964.       #endif
  5965.       #if defined(REAPERAPI_WANT_format_timestr_len) || !defined(REAPERAPI_MINIMAL)
  5966.         {(void**)&format_timestr_len,"format_timestr_len"},
  5967.       #endif
  5968.       #if defined(REAPERAPI_WANT_format_timestr_pos) || !defined(REAPERAPI_MINIMAL)
  5969.         {(void**)&format_timestr_pos,"format_timestr_pos"},
  5970.       #endif
  5971.       #if defined(REAPERAPI_WANT_FreeHeapPtr) || !defined(REAPERAPI_MINIMAL)
  5972.         {(void**)&FreeHeapPtr,"FreeHeapPtr"},
  5973.       #endif
  5974.       #if defined(REAPERAPI_WANT_genGuid) || !defined(REAPERAPI_MINIMAL)
  5975.         {(void**)&genGuid,"genGuid"},
  5976.       #endif
  5977.       #if defined(REAPERAPI_WANT_get_config_var) || !defined(REAPERAPI_MINIMAL)
  5978.         {(void**)&get_config_var,"get_config_var"},
  5979.       #endif
  5980.       #if defined(REAPERAPI_WANT_get_ini_file) || !defined(REAPERAPI_MINIMAL)
  5981.         {(void**)&get_ini_file,"get_ini_file"},
  5982.       #endif
  5983.       #if defined(REAPERAPI_WANT_get_midi_config_var) || !defined(REAPERAPI_MINIMAL)
  5984.         {(void**)&get_midi_config_var,"get_midi_config_var"},
  5985.       #endif
  5986.       #if defined(REAPERAPI_WANT_GetActionShortcutDesc) || !defined(REAPERAPI_MINIMAL)
  5987.         {(void**)&GetActionShortcutDesc,"GetActionShortcutDesc"},
  5988.       #endif
  5989.       #if defined(REAPERAPI_WANT_GetActiveTake) || !defined(REAPERAPI_MINIMAL)
  5990.         {(void**)&GetActiveTake,"GetActiveTake"},
  5991.       #endif
  5992.       #if defined(REAPERAPI_WANT_GetAppVersion) || !defined(REAPERAPI_MINIMAL)
  5993.         {(void**)&GetAppVersion,"GetAppVersion"},
  5994.       #endif
  5995.       #if defined(REAPERAPI_WANT_GetAudioAccessorEndTime) || !defined(REAPERAPI_MINIMAL)
  5996.         {(void**)&GetAudioAccessorEndTime,"GetAudioAccessorEndTime"},
  5997.       #endif
  5998.       #if defined(REAPERAPI_WANT_GetAudioAccessorHash) || !defined(REAPERAPI_MINIMAL)
  5999.         {(void**)&GetAudioAccessorHash,"GetAudioAccessorHash"},
  6000.       #endif
  6001.       #if defined(REAPERAPI_WANT_GetAudioAccessorSamples) || !defined(REAPERAPI_MINIMAL)
  6002.         {(void**)&GetAudioAccessorSamples,"GetAudioAccessorSamples"},
  6003.       #endif
  6004.       #if defined(REAPERAPI_WANT_GetAudioAccessorStartTime) || !defined(REAPERAPI_MINIMAL)
  6005.         {(void**)&GetAudioAccessorStartTime,"GetAudioAccessorStartTime"},
  6006.       #endif
  6007.       #if defined(REAPERAPI_WANT_GetColorTheme) || !defined(REAPERAPI_MINIMAL)
  6008.         {(void**)&GetColorTheme,"GetColorTheme"},
  6009.       #endif
  6010.       #if defined(REAPERAPI_WANT_GetColorThemeStruct) || !defined(REAPERAPI_MINIMAL)
  6011.         {(void**)&GetColorThemeStruct,"GetColorThemeStruct"},
  6012.       #endif
  6013.       #if defined(REAPERAPI_WANT_GetConfigWantsDock) || !defined(REAPERAPI_MINIMAL)
  6014.         {(void**)&GetConfigWantsDock,"GetConfigWantsDock"},
  6015.       #endif
  6016.       #if defined(REAPERAPI_WANT_GetContextMenu) || !defined(REAPERAPI_MINIMAL)
  6017.         {(void**)&GetContextMenu,"GetContextMenu"},
  6018.       #endif
  6019.       #if defined(REAPERAPI_WANT_GetCurrentProjectInLoadSave) || !defined(REAPERAPI_MINIMAL)
  6020.         {(void**)&GetCurrentProjectInLoadSave,"GetCurrentProjectInLoadSave"},
  6021.       #endif
  6022.       #if defined(REAPERAPI_WANT_GetCursorContext) || !defined(REAPERAPI_MINIMAL)
  6023.         {(void**)&GetCursorContext,"GetCursorContext"},
  6024.       #endif
  6025.       #if defined(REAPERAPI_WANT_GetCursorContext2) || !defined(REAPERAPI_MINIMAL)
  6026.         {(void**)&GetCursorContext2,"GetCursorContext2"},
  6027.       #endif
  6028.       #if defined(REAPERAPI_WANT_GetCursorPosition) || !defined(REAPERAPI_MINIMAL)
  6029.         {(void**)&GetCursorPosition,"GetCursorPosition"},
  6030.       #endif
  6031.       #if defined(REAPERAPI_WANT_GetCursorPositionEx) || !defined(REAPERAPI_MINIMAL)
  6032.         {(void**)&GetCursorPositionEx,"GetCursorPositionEx"},
  6033.       #endif
  6034.       #if defined(REAPERAPI_WANT_GetDisplayedMediaItemColor) || !defined(REAPERAPI_MINIMAL)
  6035.         {(void**)&GetDisplayedMediaItemColor,"GetDisplayedMediaItemColor"},
  6036.       #endif
  6037.       #if defined(REAPERAPI_WANT_GetDisplayedMediaItemColor2) || !defined(REAPERAPI_MINIMAL)
  6038.         {(void**)&GetDisplayedMediaItemColor2,"GetDisplayedMediaItemColor2"},
  6039.       #endif
  6040.       #if defined(REAPERAPI_WANT_GetEnvelopeName) || !defined(REAPERAPI_MINIMAL)
  6041.         {(void**)&GetEnvelopeName,"GetEnvelopeName"},
  6042.       #endif
  6043.       #if defined(REAPERAPI_WANT_GetEnvelopePoint) || !defined(REAPERAPI_MINIMAL)
  6044.         {(void**)&GetEnvelopePoint,"GetEnvelopePoint"},
  6045.       #endif
  6046.       #if defined(REAPERAPI_WANT_GetEnvelopePointByTime) || !defined(REAPERAPI_MINIMAL)
  6047.         {(void**)&GetEnvelopePointByTime,"GetEnvelopePointByTime"},
  6048.       #endif
  6049.       #if defined(REAPERAPI_WANT_GetEnvelopeScalingMode) || !defined(REAPERAPI_MINIMAL)
  6050.         {(void**)&GetEnvelopeScalingMode,"GetEnvelopeScalingMode"},
  6051.       #endif
  6052.       #if defined(REAPERAPI_WANT_GetEnvelopeStateChunk) || !defined(REAPERAPI_MINIMAL)
  6053.         {(void**)&GetEnvelopeStateChunk,"GetEnvelopeStateChunk"},
  6054.       #endif
  6055.       #if defined(REAPERAPI_WANT_GetExePath) || !defined(REAPERAPI_MINIMAL)
  6056.         {(void**)&GetExePath,"GetExePath"},
  6057.       #endif
  6058.       #if defined(REAPERAPI_WANT_GetExtState) || !defined(REAPERAPI_MINIMAL)
  6059.         {(void**)&GetExtState,"GetExtState"},
  6060.       #endif
  6061.       #if defined(REAPERAPI_WANT_GetFocusedFX) || !defined(REAPERAPI_MINIMAL)
  6062.         {(void**)&GetFocusedFX,"GetFocusedFX"},
  6063.       #endif
  6064.       #if defined(REAPERAPI_WANT_GetFreeDiskSpaceForRecordPath) || !defined(REAPERAPI_MINIMAL)
  6065.         {(void**)&GetFreeDiskSpaceForRecordPath,"GetFreeDiskSpaceForRecordPath"},
  6066.       #endif
  6067.       #if defined(REAPERAPI_WANT_GetFXEnvelope) || !defined(REAPERAPI_MINIMAL)
  6068.         {(void**)&GetFXEnvelope,"GetFXEnvelope"},
  6069.       #endif
  6070.       #if defined(REAPERAPI_WANT_GetGlobalAutomationOverride) || !defined(REAPERAPI_MINIMAL)
  6071.         {(void**)&GetGlobalAutomationOverride,"GetGlobalAutomationOverride"},
  6072.       #endif
  6073.       #if defined(REAPERAPI_WANT_GetHZoomLevel) || !defined(REAPERAPI_MINIMAL)
  6074.         {(void**)&GetHZoomLevel,"GetHZoomLevel"},
  6075.       #endif
  6076.       #if defined(REAPERAPI_WANT_GetIconThemePointer) || !defined(REAPERAPI_MINIMAL)
  6077.         {(void**)&GetIconThemePointer,"GetIconThemePointer"},
  6078.       #endif
  6079.       #if defined(REAPERAPI_WANT_GetIconThemeStruct) || !defined(REAPERAPI_MINIMAL)
  6080.         {(void**)&GetIconThemeStruct,"GetIconThemeStruct"},
  6081.       #endif
  6082.       #if defined(REAPERAPI_WANT_GetInputChannelName) || !defined(REAPERAPI_MINIMAL)
  6083.         {(void**)&GetInputChannelName,"GetInputChannelName"},
  6084.       #endif
  6085.       #if defined(REAPERAPI_WANT_GetInputOutputLatency) || !defined(REAPERAPI_MINIMAL)
  6086.         {(void**)&GetInputOutputLatency,"GetInputOutputLatency"},
  6087.       #endif
  6088.       #if defined(REAPERAPI_WANT_GetItemEditingTime2) || !defined(REAPERAPI_MINIMAL)
  6089.         {(void**)&GetItemEditingTime2,"GetItemEditingTime2"},
  6090.       #endif
  6091.       #if defined(REAPERAPI_WANT_GetItemProjectContext) || !defined(REAPERAPI_MINIMAL)
  6092.         {(void**)&GetItemProjectContext,"GetItemProjectContext"},
  6093.       #endif
  6094.       #if defined(REAPERAPI_WANT_GetItemStateChunk) || !defined(REAPERAPI_MINIMAL)
  6095.         {(void**)&GetItemStateChunk,"GetItemStateChunk"},
  6096.       #endif
  6097.       #if defined(REAPERAPI_WANT_GetLastColorThemeFile) || !defined(REAPERAPI_MINIMAL)
  6098.         {(void**)&GetLastColorThemeFile,"GetLastColorThemeFile"},
  6099.       #endif
  6100.       #if defined(REAPERAPI_WANT_GetLastMarkerAndCurRegion) || !defined(REAPERAPI_MINIMAL)
  6101.         {(void**)&GetLastMarkerAndCurRegion,"GetLastMarkerAndCurRegion"},
  6102.       #endif
  6103.       #if defined(REAPERAPI_WANT_GetLastTouchedFX) || !defined(REAPERAPI_MINIMAL)
  6104.         {(void**)&GetLastTouchedFX,"GetLastTouchedFX"},
  6105.       #endif
  6106.       #if defined(REAPERAPI_WANT_GetLastTouchedTrack) || !defined(REAPERAPI_MINIMAL)
  6107.         {(void**)&GetLastTouchedTrack,"GetLastTouchedTrack"},
  6108.       #endif
  6109.       #if defined(REAPERAPI_WANT_GetMainHwnd) || !defined(REAPERAPI_MINIMAL)
  6110.         {(void**)&GetMainHwnd,"GetMainHwnd"},
  6111.       #endif
  6112.       #if defined(REAPERAPI_WANT_GetMasterMuteSoloFlags) || !defined(REAPERAPI_MINIMAL)
  6113.         {(void**)&GetMasterMuteSoloFlags,"GetMasterMuteSoloFlags"},
  6114.       #endif
  6115.       #if defined(REAPERAPI_WANT_GetMasterTrack) || !defined(REAPERAPI_MINIMAL)
  6116.         {(void**)&GetMasterTrack,"GetMasterTrack"},
  6117.       #endif
  6118.       #if defined(REAPERAPI_WANT_GetMasterTrackVisibility) || !defined(REAPERAPI_MINIMAL)
  6119.         {(void**)&GetMasterTrackVisibility,"GetMasterTrackVisibility"},
  6120.       #endif
  6121.       #if defined(REAPERAPI_WANT_GetMaxMidiInputs) || !defined(REAPERAPI_MINIMAL)
  6122.         {(void**)&GetMaxMidiInputs,"GetMaxMidiInputs"},
  6123.       #endif
  6124.       #if defined(REAPERAPI_WANT_GetMaxMidiOutputs) || !defined(REAPERAPI_MINIMAL)
  6125.         {(void**)&GetMaxMidiOutputs,"GetMaxMidiOutputs"},
  6126.       #endif
  6127.       #if defined(REAPERAPI_WANT_GetMediaItem) || !defined(REAPERAPI_MINIMAL)
  6128.         {(void**)&GetMediaItem,"GetMediaItem"},
  6129.       #endif
  6130.       #if defined(REAPERAPI_WANT_GetMediaItem_Track) || !defined(REAPERAPI_MINIMAL)
  6131.         {(void**)&GetMediaItem_Track,"GetMediaItem_Track"},
  6132.       #endif
  6133.       #if defined(REAPERAPI_WANT_GetMediaItemInfo_Value) || !defined(REAPERAPI_MINIMAL)
  6134.         {(void**)&GetMediaItemInfo_Value,"GetMediaItemInfo_Value"},
  6135.       #endif
  6136.       #if defined(REAPERAPI_WANT_GetMediaItemNumTakes) || !defined(REAPERAPI_MINIMAL)
  6137.         {(void**)&GetMediaItemNumTakes,"GetMediaItemNumTakes"},
  6138.       #endif
  6139.       #if defined(REAPERAPI_WANT_GetMediaItemTake) || !defined(REAPERAPI_MINIMAL)
  6140.         {(void**)&GetMediaItemTake,"GetMediaItemTake"},
  6141.       #endif
  6142.       #if defined(REAPERAPI_WANT_GetMediaItemTake_Item) || !defined(REAPERAPI_MINIMAL)
  6143.         {(void**)&GetMediaItemTake_Item,"GetMediaItemTake_Item"},
  6144.       #endif
  6145.       #if defined(REAPERAPI_WANT_GetMediaItemTake_Source) || !defined(REAPERAPI_MINIMAL)
  6146.         {(void**)&GetMediaItemTake_Source,"GetMediaItemTake_Source"},
  6147.       #endif
  6148.       #if defined(REAPERAPI_WANT_GetMediaItemTake_Track) || !defined(REAPERAPI_MINIMAL)
  6149.         {(void**)&GetMediaItemTake_Track,"GetMediaItemTake_Track"},
  6150.       #endif
  6151.       #if defined(REAPERAPI_WANT_GetMediaItemTakeByGUID) || !defined(REAPERAPI_MINIMAL)
  6152.         {(void**)&GetMediaItemTakeByGUID,"GetMediaItemTakeByGUID"},
  6153.       #endif
  6154.       #if defined(REAPERAPI_WANT_GetMediaItemTakeInfo_Value) || !defined(REAPERAPI_MINIMAL)
  6155.         {(void**)&GetMediaItemTakeInfo_Value,"GetMediaItemTakeInfo_Value"},
  6156.       #endif
  6157.       #if defined(REAPERAPI_WANT_GetMediaItemTrack) || !defined(REAPERAPI_MINIMAL)
  6158.         {(void**)&GetMediaItemTrack,"GetMediaItemTrack"},
  6159.       #endif
  6160.       #if defined(REAPERAPI_WANT_GetMediaSourceFileName) || !defined(REAPERAPI_MINIMAL)
  6161.         {(void**)&GetMediaSourceFileName,"GetMediaSourceFileName"},
  6162.       #endif
  6163.       #if defined(REAPERAPI_WANT_GetMediaSourceLength) || !defined(REAPERAPI_MINIMAL)
  6164.         {(void**)&GetMediaSourceLength,"GetMediaSourceLength"},
  6165.       #endif
  6166.       #if defined(REAPERAPI_WANT_GetMediaSourceNumChannels) || !defined(REAPERAPI_MINIMAL)
  6167.         {(void**)&GetMediaSourceNumChannels,"GetMediaSourceNumChannels"},
  6168.       #endif
  6169.       #if defined(REAPERAPI_WANT_GetMediaSourceParent) || !defined(REAPERAPI_MINIMAL)
  6170.         {(void**)&GetMediaSourceParent,"GetMediaSourceParent"},
  6171.       #endif
  6172.       #if defined(REAPERAPI_WANT_GetMediaSourceSampleRate) || !defined(REAPERAPI_MINIMAL)
  6173.         {(void**)&GetMediaSourceSampleRate,"GetMediaSourceSampleRate"},
  6174.       #endif
  6175.       #if defined(REAPERAPI_WANT_GetMediaSourceType) || !defined(REAPERAPI_MINIMAL)
  6176.         {(void**)&GetMediaSourceType,"GetMediaSourceType"},
  6177.       #endif
  6178.       #if defined(REAPERAPI_WANT_GetMediaTrackInfo_Value) || !defined(REAPERAPI_MINIMAL)
  6179.         {(void**)&GetMediaTrackInfo_Value,"GetMediaTrackInfo_Value"},
  6180.       #endif
  6181.       #if defined(REAPERAPI_WANT_GetMidiInput) || !defined(REAPERAPI_MINIMAL)
  6182.         {(void**)&GetMidiInput,"GetMidiInput"},
  6183.       #endif
  6184.       #if defined(REAPERAPI_WANT_GetMIDIInputName) || !defined(REAPERAPI_MINIMAL)
  6185.         {(void**)&GetMIDIInputName,"GetMIDIInputName"},
  6186.       #endif
  6187.       #if defined(REAPERAPI_WANT_GetMidiOutput) || !defined(REAPERAPI_MINIMAL)
  6188.         {(void**)&GetMidiOutput,"GetMidiOutput"},
  6189.       #endif
  6190.       #if defined(REAPERAPI_WANT_GetMIDIOutputName) || !defined(REAPERAPI_MINIMAL)
  6191.         {(void**)&GetMIDIOutputName,"GetMIDIOutputName"},
  6192.       #endif
  6193.       #if defined(REAPERAPI_WANT_GetMixerScroll) || !defined(REAPERAPI_MINIMAL)
  6194.         {(void**)&GetMixerScroll,"GetMixerScroll"},
  6195.       #endif
  6196.       #if defined(REAPERAPI_WANT_GetMouseModifier) || !defined(REAPERAPI_MINIMAL)
  6197.         {(void**)&GetMouseModifier,"GetMouseModifier"},
  6198.       #endif
  6199.       #if defined(REAPERAPI_WANT_GetNumAudioInputs) || !defined(REAPERAPI_MINIMAL)
  6200.         {(void**)&GetNumAudioInputs,"GetNumAudioInputs"},
  6201.       #endif
  6202.       #if defined(REAPERAPI_WANT_GetNumAudioOutputs) || !defined(REAPERAPI_MINIMAL)
  6203.         {(void**)&GetNumAudioOutputs,"GetNumAudioOutputs"},
  6204.       #endif
  6205.       #if defined(REAPERAPI_WANT_GetNumMIDIInputs) || !defined(REAPERAPI_MINIMAL)
  6206.         {(void**)&GetNumMIDIInputs,"GetNumMIDIInputs"},
  6207.       #endif
  6208.       #if defined(REAPERAPI_WANT_GetNumMIDIOutputs) || !defined(REAPERAPI_MINIMAL)
  6209.         {(void**)&GetNumMIDIOutputs,"GetNumMIDIOutputs"},
  6210.       #endif
  6211.       #if defined(REAPERAPI_WANT_GetNumTracks) || !defined(REAPERAPI_MINIMAL)
  6212.         {(void**)&GetNumTracks,"GetNumTracks"},
  6213.       #endif
  6214.       #if defined(REAPERAPI_WANT_GetOS) || !defined(REAPERAPI_MINIMAL)
  6215.         {(void**)&GetOS,"GetOS"},
  6216.       #endif
  6217.       #if defined(REAPERAPI_WANT_GetOutputChannelName) || !defined(REAPERAPI_MINIMAL)
  6218.         {(void**)&GetOutputChannelName,"GetOutputChannelName"},
  6219.       #endif
  6220.       #if defined(REAPERAPI_WANT_GetOutputLatency) || !defined(REAPERAPI_MINIMAL)
  6221.         {(void**)&GetOutputLatency,"GetOutputLatency"},
  6222.       #endif
  6223.       #if defined(REAPERAPI_WANT_GetParentTrack) || !defined(REAPERAPI_MINIMAL)
  6224.         {(void**)&GetParentTrack,"GetParentTrack"},
  6225.       #endif
  6226.       #if defined(REAPERAPI_WANT_GetPeakFileName) || !defined(REAPERAPI_MINIMAL)
  6227.         {(void**)&GetPeakFileName,"GetPeakFileName"},
  6228.       #endif
  6229.       #if defined(REAPERAPI_WANT_GetPeakFileNameEx) || !defined(REAPERAPI_MINIMAL)
  6230.         {(void**)&GetPeakFileNameEx,"GetPeakFileNameEx"},
  6231.       #endif
  6232.       #if defined(REAPERAPI_WANT_GetPeakFileNameEx2) || !defined(REAPERAPI_MINIMAL)
  6233.         {(void**)&GetPeakFileNameEx2,"GetPeakFileNameEx2"},
  6234.       #endif
  6235.       #if defined(REAPERAPI_WANT_GetPeaksBitmap) || !defined(REAPERAPI_MINIMAL)
  6236.         {(void**)&GetPeaksBitmap,"GetPeaksBitmap"},
  6237.       #endif
  6238.       #if defined(REAPERAPI_WANT_GetPlayPosition) || !defined(REAPERAPI_MINIMAL)
  6239.         {(void**)&GetPlayPosition,"GetPlayPosition"},
  6240.       #endif
  6241.       #if defined(REAPERAPI_WANT_GetPlayPosition2) || !defined(REAPERAPI_MINIMAL)
  6242.         {(void**)&GetPlayPosition2,"GetPlayPosition2"},
  6243.       #endif
  6244.       #if defined(REAPERAPI_WANT_GetPlayPosition2Ex) || !defined(REAPERAPI_MINIMAL)
  6245.         {(void**)&GetPlayPosition2Ex,"GetPlayPosition2Ex"},
  6246.       #endif
  6247.       #if defined(REAPERAPI_WANT_GetPlayPositionEx) || !defined(REAPERAPI_MINIMAL)
  6248.         {(void**)&GetPlayPositionEx,"GetPlayPositionEx"},
  6249.       #endif
  6250.       #if defined(REAPERAPI_WANT_GetPlayState) || !defined(REAPERAPI_MINIMAL)
  6251.         {(void**)&GetPlayState,"GetPlayState"},
  6252.       #endif
  6253.       #if defined(REAPERAPI_WANT_GetPlayStateEx) || !defined(REAPERAPI_MINIMAL)
  6254.         {(void**)&GetPlayStateEx,"GetPlayStateEx"},
  6255.       #endif
  6256.       #if defined(REAPERAPI_WANT_GetPreferredDiskReadMode) || !defined(REAPERAPI_MINIMAL)
  6257.         {(void**)&GetPreferredDiskReadMode,"GetPreferredDiskReadMode"},
  6258.       #endif
  6259.       #if defined(REAPERAPI_WANT_GetPreferredDiskReadModePeak) || !defined(REAPERAPI_MINIMAL)
  6260.         {(void**)&GetPreferredDiskReadModePeak,"GetPreferredDiskReadModePeak"},
  6261.       #endif
  6262.       #if defined(REAPERAPI_WANT_GetPreferredDiskWriteMode) || !defined(REAPERAPI_MINIMAL)
  6263.         {(void**)&GetPreferredDiskWriteMode,"GetPreferredDiskWriteMode"},
  6264.       #endif
  6265.       #if defined(REAPERAPI_WANT_GetProjectLength) || !defined(REAPERAPI_MINIMAL)
  6266.         {(void**)&GetProjectLength,"GetProjectLength"},
  6267.       #endif
  6268.       #if defined(REAPERAPI_WANT_GetProjectPath) || !defined(REAPERAPI_MINIMAL)
  6269.         {(void**)&GetProjectPath,"GetProjectPath"},
  6270.       #endif
  6271.       #if defined(REAPERAPI_WANT_GetProjectPathEx) || !defined(REAPERAPI_MINIMAL)
  6272.         {(void**)&GetProjectPathEx,"GetProjectPathEx"},
  6273.       #endif
  6274.       #if defined(REAPERAPI_WANT_GetProjectStateChangeCount) || !defined(REAPERAPI_MINIMAL)
  6275.         {(void**)&GetProjectStateChangeCount,"GetProjectStateChangeCount"},
  6276.       #endif
  6277.       #if defined(REAPERAPI_WANT_GetProjectTimeOffset) || !defined(REAPERAPI_MINIMAL)
  6278.         {(void**)&GetProjectTimeOffset,"GetProjectTimeOffset"},
  6279.       #endif
  6280.       #if defined(REAPERAPI_WANT_GetProjectTimeSignature) || !defined(REAPERAPI_MINIMAL)
  6281.         {(void**)&GetProjectTimeSignature,"GetProjectTimeSignature"},
  6282.       #endif
  6283.       #if defined(REAPERAPI_WANT_GetProjectTimeSignature2) || !defined(REAPERAPI_MINIMAL)
  6284.         {(void**)&GetProjectTimeSignature2,"GetProjectTimeSignature2"},
  6285.       #endif
  6286.       #if defined(REAPERAPI_WANT_GetProjExtState) || !defined(REAPERAPI_MINIMAL)
  6287.         {(void**)&GetProjExtState,"GetProjExtState"},
  6288.       #endif
  6289.       #if defined(REAPERAPI_WANT_GetResourcePath) || !defined(REAPERAPI_MINIMAL)
  6290.         {(void**)&GetResourcePath,"GetResourcePath"},
  6291.       #endif
  6292.       #if defined(REAPERAPI_WANT_GetSelectedEnvelope) || !defined(REAPERAPI_MINIMAL)
  6293.         {(void**)&GetSelectedEnvelope,"GetSelectedEnvelope"},
  6294.       #endif
  6295.       #if defined(REAPERAPI_WANT_GetSelectedMediaItem) || !defined(REAPERAPI_MINIMAL)
  6296.         {(void**)&GetSelectedMediaItem,"GetSelectedMediaItem"},
  6297.       #endif
  6298.       #if defined(REAPERAPI_WANT_GetSelectedTrack) || !defined(REAPERAPI_MINIMAL)
  6299.         {(void**)&GetSelectedTrack,"GetSelectedTrack"},
  6300.       #endif
  6301.       #if defined(REAPERAPI_WANT_GetSelectedTrackEnvelope) || !defined(REAPERAPI_MINIMAL)
  6302.         {(void**)&GetSelectedTrackEnvelope,"GetSelectedTrackEnvelope"},
  6303.       #endif
  6304.       #if defined(REAPERAPI_WANT_GetSet_ArrangeView2) || !defined(REAPERAPI_MINIMAL)
  6305.         {(void**)&GetSet_ArrangeView2,"GetSet_ArrangeView2"},
  6306.       #endif
  6307.       #if defined(REAPERAPI_WANT_GetSet_LoopTimeRange) || !defined(REAPERAPI_MINIMAL)
  6308.         {(void**)&GetSet_LoopTimeRange,"GetSet_LoopTimeRange"},
  6309.       #endif
  6310.       #if defined(REAPERAPI_WANT_GetSet_LoopTimeRange2) || !defined(REAPERAPI_MINIMAL)
  6311.         {(void**)&GetSet_LoopTimeRange2,"GetSet_LoopTimeRange2"},
  6312.       #endif
  6313.       #if defined(REAPERAPI_WANT_GetSetEnvelopeState) || !defined(REAPERAPI_MINIMAL)
  6314.         {(void**)&GetSetEnvelopeState,"GetSetEnvelopeState"},
  6315.       #endif
  6316.       #if defined(REAPERAPI_WANT_GetSetEnvelopeState2) || !defined(REAPERAPI_MINIMAL)
  6317.         {(void**)&GetSetEnvelopeState2,"GetSetEnvelopeState2"},
  6318.       #endif
  6319.       #if defined(REAPERAPI_WANT_GetSetItemState) || !defined(REAPERAPI_MINIMAL)
  6320.         {(void**)&GetSetItemState,"GetSetItemState"},
  6321.       #endif
  6322.       #if defined(REAPERAPI_WANT_GetSetItemState2) || !defined(REAPERAPI_MINIMAL)
  6323.         {(void**)&GetSetItemState2,"GetSetItemState2"},
  6324.       #endif
  6325.       #if defined(REAPERAPI_WANT_GetSetMediaItemInfo) || !defined(REAPERAPI_MINIMAL)
  6326.         {(void**)&GetSetMediaItemInfo,"GetSetMediaItemInfo"},
  6327.       #endif
  6328.       #if defined(REAPERAPI_WANT_GetSetMediaItemTakeInfo) || !defined(REAPERAPI_MINIMAL)
  6329.         {(void**)&GetSetMediaItemTakeInfo,"GetSetMediaItemTakeInfo"},
  6330.       #endif
  6331.       #if defined(REAPERAPI_WANT_GetSetMediaItemTakeInfo_String) || !defined(REAPERAPI_MINIMAL)
  6332.         {(void**)&GetSetMediaItemTakeInfo_String,"GetSetMediaItemTakeInfo_String"},
  6333.       #endif
  6334.       #if defined(REAPERAPI_WANT_GetSetMediaTrackInfo) || !defined(REAPERAPI_MINIMAL)
  6335.         {(void**)&GetSetMediaTrackInfo,"GetSetMediaTrackInfo"},
  6336.       #endif
  6337.       #if defined(REAPERAPI_WANT_GetSetMediaTrackInfo_String) || !defined(REAPERAPI_MINIMAL)
  6338.         {(void**)&GetSetMediaTrackInfo_String,"GetSetMediaTrackInfo_String"},
  6339.       #endif
  6340.       #if defined(REAPERAPI_WANT_GetSetObjectState) || !defined(REAPERAPI_MINIMAL)
  6341.         {(void**)&GetSetObjectState,"GetSetObjectState"},
  6342.       #endif
  6343.       #if defined(REAPERAPI_WANT_GetSetObjectState2) || !defined(REAPERAPI_MINIMAL)
  6344.         {(void**)&GetSetObjectState2,"GetSetObjectState2"},
  6345.       #endif
  6346.       #if defined(REAPERAPI_WANT_GetSetRepeat) || !defined(REAPERAPI_MINIMAL)
  6347.         {(void**)&GetSetRepeat,"GetSetRepeat"},
  6348.       #endif
  6349.       #if defined(REAPERAPI_WANT_GetSetRepeatEx) || !defined(REAPERAPI_MINIMAL)
  6350.         {(void**)&GetSetRepeatEx,"GetSetRepeatEx"},
  6351.       #endif
  6352.       #if defined(REAPERAPI_WANT_GetSetTrackMIDISupportFile) || !defined(REAPERAPI_MINIMAL)
  6353.         {(void**)&GetSetTrackMIDISupportFile,"GetSetTrackMIDISupportFile"},
  6354.       #endif
  6355.       #if defined(REAPERAPI_WANT_GetSetTrackSendInfo) || !defined(REAPERAPI_MINIMAL)
  6356.         {(void**)&GetSetTrackSendInfo,"GetSetTrackSendInfo"},
  6357.       #endif
  6358.       #if defined(REAPERAPI_WANT_GetSetTrackState) || !defined(REAPERAPI_MINIMAL)
  6359.         {(void**)&GetSetTrackState,"GetSetTrackState"},
  6360.       #endif
  6361.       #if defined(REAPERAPI_WANT_GetSetTrackState2) || !defined(REAPERAPI_MINIMAL)
  6362.         {(void**)&GetSetTrackState2,"GetSetTrackState2"},
  6363.       #endif
  6364.       #if defined(REAPERAPI_WANT_GetSubProjectFromSource) || !defined(REAPERAPI_MINIMAL)
  6365.         {(void**)&GetSubProjectFromSource,"GetSubProjectFromSource"},
  6366.       #endif
  6367.       #if defined(REAPERAPI_WANT_GetTake) || !defined(REAPERAPI_MINIMAL)
  6368.         {(void**)&GetTake,"GetTake"},
  6369.       #endif
  6370.       #if defined(REAPERAPI_WANT_GetTakeEnvelope) || !defined(REAPERAPI_MINIMAL)
  6371.         {(void**)&GetTakeEnvelope,"GetTakeEnvelope"},
  6372.       #endif
  6373.       #if defined(REAPERAPI_WANT_GetTakeEnvelopeByName) || !defined(REAPERAPI_MINIMAL)
  6374.         {(void**)&GetTakeEnvelopeByName,"GetTakeEnvelopeByName"},
  6375.       #endif
  6376.       #if defined(REAPERAPI_WANT_GetTakeName) || !defined(REAPERAPI_MINIMAL)
  6377.         {(void**)&GetTakeName,"GetTakeName"},
  6378.       #endif
  6379.       #if defined(REAPERAPI_WANT_GetTakeNumStretchMarkers) || !defined(REAPERAPI_MINIMAL)
  6380.         {(void**)&GetTakeNumStretchMarkers,"GetTakeNumStretchMarkers"},
  6381.       #endif
  6382.       #if defined(REAPERAPI_WANT_GetTakeStretchMarker) || !defined(REAPERAPI_MINIMAL)
  6383.         {(void**)&GetTakeStretchMarker,"GetTakeStretchMarker"},
  6384.       #endif
  6385.       #if defined(REAPERAPI_WANT_GetTakeStretchMarkerSlope) || !defined(REAPERAPI_MINIMAL)
  6386.         {(void**)&GetTakeStretchMarkerSlope,"GetTakeStretchMarkerSlope"},
  6387.       #endif
  6388.       #if defined(REAPERAPI_WANT_GetTCPFXParm) || !defined(REAPERAPI_MINIMAL)
  6389.         {(void**)&GetTCPFXParm,"GetTCPFXParm"},
  6390.       #endif
  6391.       #if defined(REAPERAPI_WANT_GetTempoMatchPlayRate) || !defined(REAPERAPI_MINIMAL)
  6392.         {(void**)&GetTempoMatchPlayRate,"GetTempoMatchPlayRate"},
  6393.       #endif
  6394.       #if defined(REAPERAPI_WANT_GetTempoTimeSigMarker) || !defined(REAPERAPI_MINIMAL)
  6395.         {(void**)&GetTempoTimeSigMarker,"GetTempoTimeSigMarker"},
  6396.       #endif
  6397.       #if defined(REAPERAPI_WANT_GetToggleCommandState) || !defined(REAPERAPI_MINIMAL)
  6398.         {(void**)&GetToggleCommandState,"GetToggleCommandState"},
  6399.       #endif
  6400.       #if defined(REAPERAPI_WANT_GetToggleCommandState2) || !defined(REAPERAPI_MINIMAL)
  6401.         {(void**)&GetToggleCommandState2,"GetToggleCommandState2"},
  6402.       #endif
  6403.       #if defined(REAPERAPI_WANT_GetToggleCommandStateEx) || !defined(REAPERAPI_MINIMAL)
  6404.         {(void**)&GetToggleCommandStateEx,"GetToggleCommandStateEx"},
  6405.       #endif
  6406.       #if defined(REAPERAPI_WANT_GetToggleCommandStateThroughHooks) || !defined(REAPERAPI_MINIMAL)
  6407.         {(void**)&GetToggleCommandStateThroughHooks,"GetToggleCommandStateThroughHooks"},
  6408.       #endif
  6409.       #if defined(REAPERAPI_WANT_GetTooltipWindow) || !defined(REAPERAPI_MINIMAL)
  6410.         {(void**)&GetTooltipWindow,"GetTooltipWindow"},
  6411.       #endif
  6412.       #if defined(REAPERAPI_WANT_GetTrack) || !defined(REAPERAPI_MINIMAL)
  6413.         {(void**)&GetTrack,"GetTrack"},
  6414.       #endif
  6415.       #if defined(REAPERAPI_WANT_GetTrackAutomationMode) || !defined(REAPERAPI_MINIMAL)
  6416.         {(void**)&GetTrackAutomationMode,"GetTrackAutomationMode"},
  6417.       #endif
  6418.       #if defined(REAPERAPI_WANT_GetTrackColor) || !defined(REAPERAPI_MINIMAL)
  6419.         {(void**)&GetTrackColor,"GetTrackColor"},
  6420.       #endif
  6421.       #if defined(REAPERAPI_WANT_GetTrackDepth) || !defined(REAPERAPI_MINIMAL)
  6422.         {(void**)&GetTrackDepth,"GetTrackDepth"},
  6423.       #endif
  6424.       #if defined(REAPERAPI_WANT_GetTrackEnvelope) || !defined(REAPERAPI_MINIMAL)
  6425.         {(void**)&GetTrackEnvelope,"GetTrackEnvelope"},
  6426.       #endif
  6427.       #if defined(REAPERAPI_WANT_GetTrackEnvelopeByName) || !defined(REAPERAPI_MINIMAL)
  6428.         {(void**)&GetTrackEnvelopeByName,"GetTrackEnvelopeByName"},
  6429.       #endif
  6430.       #if defined(REAPERAPI_WANT_GetTrackGUID) || !defined(REAPERAPI_MINIMAL)
  6431.         {(void**)&GetTrackGUID,"GetTrackGUID"},
  6432.       #endif
  6433.       #if defined(REAPERAPI_WANT_GetTrackInfo) || !defined(REAPERAPI_MINIMAL)
  6434.         {(void**)&GetTrackInfo,"GetTrackInfo"},
  6435.       #endif
  6436.       #if defined(REAPERAPI_WANT_GetTrackMediaItem) || !defined(REAPERAPI_MINIMAL)
  6437.         {(void**)&GetTrackMediaItem,"GetTrackMediaItem"},
  6438.       #endif
  6439.       #if defined(REAPERAPI_WANT_GetTrackMIDINoteName) || !defined(REAPERAPI_MINIMAL)
  6440.         {(void**)&GetTrackMIDINoteName,"GetTrackMIDINoteName"},
  6441.       #endif
  6442.       #if defined(REAPERAPI_WANT_GetTrackMIDINoteNameEx) || !defined(REAPERAPI_MINIMAL)
  6443.         {(void**)&GetTrackMIDINoteNameEx,"GetTrackMIDINoteNameEx"},
  6444.       #endif
  6445.       #if defined(REAPERAPI_WANT_GetTrackMIDINoteRange) || !defined(REAPERAPI_MINIMAL)
  6446.         {(void**)&GetTrackMIDINoteRange,"GetTrackMIDINoteRange"},
  6447.       #endif
  6448.       #if defined(REAPERAPI_WANT_GetTrackNumMediaItems) || !defined(REAPERAPI_MINIMAL)
  6449.         {(void**)&GetTrackNumMediaItems,"GetTrackNumMediaItems"},
  6450.       #endif
  6451.       #if defined(REAPERAPI_WANT_GetTrackNumSends) || !defined(REAPERAPI_MINIMAL)
  6452.         {(void**)&GetTrackNumSends,"GetTrackNumSends"},
  6453.       #endif
  6454.       #if defined(REAPERAPI_WANT_GetTrackReceiveName) || !defined(REAPERAPI_MINIMAL)
  6455.         {(void**)&GetTrackReceiveName,"GetTrackReceiveName"},
  6456.       #endif
  6457.       #if defined(REAPERAPI_WANT_GetTrackReceiveUIMute) || !defined(REAPERAPI_MINIMAL)
  6458.         {(void**)&GetTrackReceiveUIMute,"GetTrackReceiveUIMute"},
  6459.       #endif
  6460.       #if defined(REAPERAPI_WANT_GetTrackReceiveUIVolPan) || !defined(REAPERAPI_MINIMAL)
  6461.         {(void**)&GetTrackReceiveUIVolPan,"GetTrackReceiveUIVolPan"},
  6462.       #endif
  6463.       #if defined(REAPERAPI_WANT_GetTrackSendName) || !defined(REAPERAPI_MINIMAL)
  6464.         {(void**)&GetTrackSendName,"GetTrackSendName"},
  6465.       #endif
  6466.       #if defined(REAPERAPI_WANT_GetTrackSendUIMute) || !defined(REAPERAPI_MINIMAL)
  6467.         {(void**)&GetTrackSendUIMute,"GetTrackSendUIMute"},
  6468.       #endif
  6469.       #if defined(REAPERAPI_WANT_GetTrackSendUIVolPan) || !defined(REAPERAPI_MINIMAL)
  6470.         {(void**)&GetTrackSendUIVolPan,"GetTrackSendUIVolPan"},
  6471.       #endif
  6472.       #if defined(REAPERAPI_WANT_GetTrackState) || !defined(REAPERAPI_MINIMAL)
  6473.         {(void**)&GetTrackState,"GetTrackState"},
  6474.       #endif
  6475.       #if defined(REAPERAPI_WANT_GetTrackStateChunk) || !defined(REAPERAPI_MINIMAL)
  6476.         {(void**)&GetTrackStateChunk,"GetTrackStateChunk"},
  6477.       #endif
  6478.       #if defined(REAPERAPI_WANT_GetTrackUIMute) || !defined(REAPERAPI_MINIMAL)
  6479.         {(void**)&GetTrackUIMute,"GetTrackUIMute"},
  6480.       #endif
  6481.       #if defined(REAPERAPI_WANT_GetTrackUIPan) || !defined(REAPERAPI_MINIMAL)
  6482.         {(void**)&GetTrackUIPan,"GetTrackUIPan"},
  6483.       #endif
  6484.       #if defined(REAPERAPI_WANT_GetTrackUIVolPan) || !defined(REAPERAPI_MINIMAL)
  6485.         {(void**)&GetTrackUIVolPan,"GetTrackUIVolPan"},
  6486.       #endif
  6487.       #if defined(REAPERAPI_WANT_GetUserFileNameForRead) || !defined(REAPERAPI_MINIMAL)
  6488.         {(void**)&GetUserFileNameForRead,"GetUserFileNameForRead"},
  6489.       #endif
  6490.       #if defined(REAPERAPI_WANT_GetUserInputs) || !defined(REAPERAPI_MINIMAL)
  6491.         {(void**)&GetUserInputs,"GetUserInputs"},
  6492.       #endif
  6493.       #if defined(REAPERAPI_WANT_GoToMarker) || !defined(REAPERAPI_MINIMAL)
  6494.         {(void**)&GoToMarker,"GoToMarker"},
  6495.       #endif
  6496.       #if defined(REAPERAPI_WANT_GoToRegion) || !defined(REAPERAPI_MINIMAL)
  6497.         {(void**)&GoToRegion,"GoToRegion"},
  6498.       #endif
  6499.       #if defined(REAPERAPI_WANT_GR_SelectColor) || !defined(REAPERAPI_MINIMAL)
  6500.         {(void**)&GR_SelectColor,"GR_SelectColor"},
  6501.       #endif
  6502.       #if defined(REAPERAPI_WANT_GSC_mainwnd) || !defined(REAPERAPI_MINIMAL)
  6503.         {(void**)&GSC_mainwnd,"GSC_mainwnd"},
  6504.       #endif
  6505.       #if defined(REAPERAPI_WANT_guidToString) || !defined(REAPERAPI_MINIMAL)
  6506.         {(void**)&guidToString,"guidToString"},
  6507.       #endif
  6508.       #if defined(REAPERAPI_WANT_HasExtState) || !defined(REAPERAPI_MINIMAL)
  6509.         {(void**)&HasExtState,"HasExtState"},
  6510.       #endif
  6511.       #if defined(REAPERAPI_WANT_HasTrackMIDIPrograms) || !defined(REAPERAPI_MINIMAL)
  6512.         {(void**)&HasTrackMIDIPrograms,"HasTrackMIDIPrograms"},
  6513.       #endif
  6514.       #if defined(REAPERAPI_WANT_HasTrackMIDIProgramsEx) || !defined(REAPERAPI_MINIMAL)
  6515.         {(void**)&HasTrackMIDIProgramsEx,"HasTrackMIDIProgramsEx"},
  6516.       #endif
  6517.       #if defined(REAPERAPI_WANT_Help_Set) || !defined(REAPERAPI_MINIMAL)
  6518.         {(void**)&Help_Set,"Help_Set"},
  6519.       #endif
  6520.       #if defined(REAPERAPI_WANT_HiresPeaksFromSource) || !defined(REAPERAPI_MINIMAL)
  6521.         {(void**)&HiresPeaksFromSource,"HiresPeaksFromSource"},
  6522.       #endif
  6523.       #if defined(REAPERAPI_WANT_image_resolve_fn) || !defined(REAPERAPI_MINIMAL)
  6524.         {(void**)&image_resolve_fn,"image_resolve_fn"},
  6525.       #endif
  6526.       #if defined(REAPERAPI_WANT_InsertEnvelopePoint) || !defined(REAPERAPI_MINIMAL)
  6527.         {(void**)&InsertEnvelopePoint,"InsertEnvelopePoint"},
  6528.       #endif
  6529.       #if defined(REAPERAPI_WANT_InsertMedia) || !defined(REAPERAPI_MINIMAL)
  6530.         {(void**)&InsertMedia,"InsertMedia"},
  6531.       #endif
  6532.       #if defined(REAPERAPI_WANT_InsertMediaSection) || !defined(REAPERAPI_MINIMAL)
  6533.         {(void**)&InsertMediaSection,"InsertMediaSection"},
  6534.       #endif
  6535.       #if defined(REAPERAPI_WANT_InsertTrackAtIndex) || !defined(REAPERAPI_MINIMAL)
  6536.         {(void**)&InsertTrackAtIndex,"InsertTrackAtIndex"},
  6537.       #endif
  6538.       #if defined(REAPERAPI_WANT_IsInRealTimeAudio) || !defined(REAPERAPI_MINIMAL)
  6539.         {(void**)&IsInRealTimeAudio,"IsInRealTimeAudio"},
  6540.       #endif
  6541.       #if defined(REAPERAPI_WANT_IsItemTakeActiveForPlayback) || !defined(REAPERAPI_MINIMAL)
  6542.         {(void**)&IsItemTakeActiveForPlayback,"IsItemTakeActiveForPlayback"},
  6543.       #endif
  6544.       #if defined(REAPERAPI_WANT_IsMediaExtension) || !defined(REAPERAPI_MINIMAL)
  6545.         {(void**)&IsMediaExtension,"IsMediaExtension"},
  6546.       #endif
  6547.       #if defined(REAPERAPI_WANT_IsMediaItemSelected) || !defined(REAPERAPI_MINIMAL)
  6548.         {(void**)&IsMediaItemSelected,"IsMediaItemSelected"},
  6549.       #endif
  6550.       #if defined(REAPERAPI_WANT_IsProjectDirty) || !defined(REAPERAPI_MINIMAL)
  6551.         {(void**)&IsProjectDirty,"IsProjectDirty"},
  6552.       #endif
  6553.       #if defined(REAPERAPI_WANT_IsREAPER) || !defined(REAPERAPI_MINIMAL)
  6554.         {(void**)&IsREAPER,"IsREAPER"},
  6555.       #endif
  6556.       #if defined(REAPERAPI_WANT_IsTrackSelected) || !defined(REAPERAPI_MINIMAL)
  6557.         {(void**)&IsTrackSelected,"IsTrackSelected"},
  6558.       #endif
  6559.       #if defined(REAPERAPI_WANT_IsTrackVisible) || !defined(REAPERAPI_MINIMAL)
  6560.         {(void**)&IsTrackVisible,"IsTrackVisible"},
  6561.       #endif
  6562.       #if defined(REAPERAPI_WANT_kbd_enumerateActions) || !defined(REAPERAPI_MINIMAL)
  6563.         {(void**)&kbd_enumerateActions,"kbd_enumerateActions"},
  6564.       #endif
  6565.       #if defined(REAPERAPI_WANT_kbd_formatKeyName) || !defined(REAPERAPI_MINIMAL)
  6566.         {(void**)&kbd_formatKeyName,"kbd_formatKeyName"},
  6567.       #endif
  6568.       #if defined(REAPERAPI_WANT_kbd_getCommandName) || !defined(REAPERAPI_MINIMAL)
  6569.         {(void**)&kbd_getCommandName,"kbd_getCommandName"},
  6570.       #endif
  6571.       #if defined(REAPERAPI_WANT_kbd_getTextFromCmd) || !defined(REAPERAPI_MINIMAL)
  6572.         {(void**)&kbd_getTextFromCmd,"kbd_getTextFromCmd"},
  6573.       #endif
  6574.       #if defined(REAPERAPI_WANT_KBD_OnMainActionEx) || !defined(REAPERAPI_MINIMAL)
  6575.         {(void**)&KBD_OnMainActionEx,"KBD_OnMainActionEx"},
  6576.       #endif
  6577.       #if defined(REAPERAPI_WANT_kbd_OnMidiEvent) || !defined(REAPERAPI_MINIMAL)
  6578.         {(void**)&kbd_OnMidiEvent,"kbd_OnMidiEvent"},
  6579.       #endif
  6580.       #if defined(REAPERAPI_WANT_kbd_OnMidiList) || !defined(REAPERAPI_MINIMAL)
  6581.         {(void**)&kbd_OnMidiList,"kbd_OnMidiList"},
  6582.       #endif
  6583.       #if defined(REAPERAPI_WANT_kbd_ProcessActionsMenu) || !defined(REAPERAPI_MINIMAL)
  6584.         {(void**)&kbd_ProcessActionsMenu,"kbd_ProcessActionsMenu"},
  6585.       #endif
  6586.       #if defined(REAPERAPI_WANT_kbd_processMidiEventActionEx) || !defined(REAPERAPI_MINIMAL)
  6587.         {(void**)&kbd_processMidiEventActionEx,"kbd_processMidiEventActionEx"},
  6588.       #endif
  6589.       #if defined(REAPERAPI_WANT_kbd_reprocessMenu) || !defined(REAPERAPI_MINIMAL)
  6590.         {(void**)&kbd_reprocessMenu,"kbd_reprocessMenu"},
  6591.       #endif
  6592.       #if defined(REAPERAPI_WANT_kbd_RunCommandThroughHooks) || !defined(REAPERAPI_MINIMAL)
  6593.         {(void**)&kbd_RunCommandThroughHooks,"kbd_RunCommandThroughHooks"},
  6594.       #endif
  6595.       #if defined(REAPERAPI_WANT_kbd_translateAccelerator) || !defined(REAPERAPI_MINIMAL)
  6596.         {(void**)&kbd_translateAccelerator,"kbd_translateAccelerator"},
  6597.       #endif
  6598.       #if defined(REAPERAPI_WANT_kbd_translateMouse) || !defined(REAPERAPI_MINIMAL)
  6599.         {(void**)&kbd_translateMouse,"kbd_translateMouse"},
  6600.       #endif
  6601.  
  6602.  
  6603.     #ifndef REAPERAPI_NO_LICE
  6604.       #if defined(REAPERAPI_WANT_LICE__Destroy) || !defined(REAPERAPI_MINIMAL)
  6605.         {(void**)&LICE__Destroy,"LICE__Destroy"},
  6606.       #endif
  6607.       #if defined(REAPERAPI_WANT_LICE__DestroyFont) || !defined(REAPERAPI_MINIMAL)
  6608.         {(void**)&LICE__DestroyFont,"LICE__DestroyFont"},
  6609.       #endif
  6610.       #if defined(REAPERAPI_WANT_LICE__DrawText) || !defined(REAPERAPI_MINIMAL)
  6611.         {(void**)&LICE__DrawText,"LICE__DrawText"},
  6612.       #endif
  6613.       #if defined(REAPERAPI_WANT_LICE__GetBits) || !defined(REAPERAPI_MINIMAL)
  6614.         {(void**)&LICE__GetBits,"LICE__GetBits"},
  6615.       #endif
  6616.       #if defined(REAPERAPI_WANT_LICE__GetDC) || !defined(REAPERAPI_MINIMAL)
  6617.         {(void**)&LICE__GetDC,"LICE__GetDC"},
  6618.       #endif
  6619.       #if defined(REAPERAPI_WANT_LICE__GetHeight) || !defined(REAPERAPI_MINIMAL)
  6620.         {(void**)&LICE__GetHeight,"LICE__GetHeight"},
  6621.       #endif
  6622.       #if defined(REAPERAPI_WANT_LICE__GetRowSpan) || !defined(REAPERAPI_MINIMAL)
  6623.         {(void**)&LICE__GetRowSpan,"LICE__GetRowSpan"},
  6624.       #endif
  6625.       #if defined(REAPERAPI_WANT_LICE__GetWidth) || !defined(REAPERAPI_MINIMAL)
  6626.         {(void**)&LICE__GetWidth,"LICE__GetWidth"},
  6627.       #endif
  6628.       #if defined(REAPERAPI_WANT_LICE__IsFlipped) || !defined(REAPERAPI_MINIMAL)
  6629.         {(void**)&LICE__IsFlipped,"LICE__IsFlipped"},
  6630.       #endif
  6631.       #if defined(REAPERAPI_WANT_LICE__resize) || !defined(REAPERAPI_MINIMAL)
  6632.         {(void**)&LICE__resize,"LICE__resize"},
  6633.       #endif
  6634.       #if defined(REAPERAPI_WANT_LICE__SetBkColor) || !defined(REAPERAPI_MINIMAL)
  6635.         {(void**)&LICE__SetBkColor,"LICE__SetBkColor"},
  6636.       #endif
  6637.       #if defined(REAPERAPI_WANT_LICE__SetFromHFont) || !defined(REAPERAPI_MINIMAL)
  6638.         {(void**)&LICE__SetFromHFont,"LICE__SetFromHFont"},
  6639.       #endif
  6640.       #if defined(REAPERAPI_WANT_LICE__SetTextColor) || !defined(REAPERAPI_MINIMAL)
  6641.         {(void**)&LICE__SetTextColor,"LICE__SetTextColor"},
  6642.       #endif
  6643.       #if defined(REAPERAPI_WANT_LICE__SetTextCombineMode) || !defined(REAPERAPI_MINIMAL)
  6644.         {(void**)&LICE__SetTextCombineMode,"LICE__SetTextCombineMode"},
  6645.       #endif
  6646.       #if defined(REAPERAPI_WANT_LICE_Arc) || !defined(REAPERAPI_MINIMAL)
  6647.         {(void**)&LICE_Arc,"LICE_Arc"},
  6648.       #endif
  6649.       #if defined(REAPERAPI_WANT_LICE_Blit) || !defined(REAPERAPI_MINIMAL)
  6650.         {(void**)&LICE_Blit,"LICE_Blit"},
  6651.       #endif
  6652.       #if defined(REAPERAPI_WANT_LICE_Blur) || !defined(REAPERAPI_MINIMAL)
  6653.         {(void**)&LICE_Blur,"LICE_Blur"},
  6654.       #endif
  6655.       #if defined(REAPERAPI_WANT_LICE_BorderedRect) || !defined(REAPERAPI_MINIMAL)
  6656.         {(void**)&LICE_BorderedRect,"LICE_BorderedRect"},
  6657.       #endif
  6658.       #if defined(REAPERAPI_WANT_LICE_Circle) || !defined(REAPERAPI_MINIMAL)
  6659.         {(void**)&LICE_Circle,"LICE_Circle"},
  6660.       #endif
  6661.       #if defined(REAPERAPI_WANT_LICE_Clear) || !defined(REAPERAPI_MINIMAL)
  6662.         {(void**)&LICE_Clear,"LICE_Clear"},
  6663.       #endif
  6664.       #if defined(REAPERAPI_WANT_LICE_ClearRect) || !defined(REAPERAPI_MINIMAL)
  6665.         {(void**)&LICE_ClearRect,"LICE_ClearRect"},
  6666.       #endif
  6667.       #if defined(REAPERAPI_WANT_LICE_ClipLine) || !defined(REAPERAPI_MINIMAL)
  6668.         {(void**)&LICE_ClipLine,"LICE_ClipLine"},
  6669.       #endif
  6670.       #if defined(REAPERAPI_WANT_LICE_Copy) || !defined(REAPERAPI_MINIMAL)
  6671.         {(void**)&LICE_Copy,"LICE_Copy"},
  6672.       #endif
  6673.       #if defined(REAPERAPI_WANT_LICE_CreateBitmap) || !defined(REAPERAPI_MINIMAL)
  6674.         {(void**)&LICE_CreateBitmap,"LICE_CreateBitmap"},
  6675.       #endif
  6676.       #if defined(REAPERAPI_WANT_LICE_CreateFont) || !defined(REAPERAPI_MINIMAL)
  6677.         {(void**)&LICE_CreateFont,"LICE_CreateFont"},
  6678.       #endif
  6679.       #if defined(REAPERAPI_WANT_LICE_DrawChar) || !defined(REAPERAPI_MINIMAL)
  6680.         {(void**)&LICE_DrawChar,"LICE_DrawChar"},
  6681.       #endif
  6682.       #if defined(REAPERAPI_WANT_LICE_DrawGlyph) || !defined(REAPERAPI_MINIMAL)
  6683.         {(void**)&LICE_DrawGlyph,"LICE_DrawGlyph"},
  6684.       #endif
  6685.       #if defined(REAPERAPI_WANT_LICE_DrawRect) || !defined(REAPERAPI_MINIMAL)
  6686.         {(void**)&LICE_DrawRect,"LICE_DrawRect"},
  6687.       #endif
  6688.       #if defined(REAPERAPI_WANT_LICE_DrawText) || !defined(REAPERAPI_MINIMAL)
  6689.         {(void**)&LICE_DrawText,"LICE_DrawText"},
  6690.       #endif
  6691.       #if defined(REAPERAPI_WANT_LICE_FillCircle) || !defined(REAPERAPI_MINIMAL)
  6692.         {(void**)&LICE_FillCircle,"LICE_FillCircle"},
  6693.       #endif
  6694.       #if defined(REAPERAPI_WANT_LICE_FillConvexPolygon) || !defined(REAPERAPI_MINIMAL)
  6695.         {(void**)&LICE_FillConvexPolygon,"LICE_FillConvexPolygon"},
  6696.       #endif
  6697.       #if defined(REAPERAPI_WANT_LICE_FillRect) || !defined(REAPERAPI_MINIMAL)
  6698.         {(void**)&LICE_FillRect,"LICE_FillRect"},
  6699.       #endif
  6700.       #if defined(REAPERAPI_WANT_LICE_FillTrapezoid) || !defined(REAPERAPI_MINIMAL)
  6701.         {(void**)&LICE_FillTrapezoid,"LICE_FillTrapezoid"},
  6702.       #endif
  6703.       #if defined(REAPERAPI_WANT_LICE_FillTriangle) || !defined(REAPERAPI_MINIMAL)
  6704.         {(void**)&LICE_FillTriangle,"LICE_FillTriangle"},
  6705.       #endif
  6706.       #if defined(REAPERAPI_WANT_LICE_GetPixel) || !defined(REAPERAPI_MINIMAL)
  6707.         {(void**)&LICE_GetPixel,"LICE_GetPixel"},
  6708.       #endif
  6709.       #if defined(REAPERAPI_WANT_LICE_GradRect) || !defined(REAPERAPI_MINIMAL)
  6710.         {(void**)&LICE_GradRect,"LICE_GradRect"},
  6711.       #endif
  6712.       #if defined(REAPERAPI_WANT_LICE_Line) || !defined(REAPERAPI_MINIMAL)
  6713.         {(void**)&LICE_Line,"LICE_Line"},
  6714.       #endif
  6715.       #if defined(REAPERAPI_WANT_LICE_LineInt) || !defined(REAPERAPI_MINIMAL)
  6716.         {(void**)&LICE_LineInt,"LICE_LineInt"},
  6717.       #endif
  6718.       #if defined(REAPERAPI_WANT_LICE_LoadPNG) || !defined(REAPERAPI_MINIMAL)
  6719.         {(void**)&LICE_LoadPNG,"LICE_LoadPNG"},
  6720.       #endif
  6721.       #if defined(REAPERAPI_WANT_LICE_LoadPNGFromResource) || !defined(REAPERAPI_MINIMAL)
  6722.         {(void**)&LICE_LoadPNGFromResource,"LICE_LoadPNGFromResource"},
  6723.       #endif
  6724.       #if defined(REAPERAPI_WANT_LICE_MeasureText) || !defined(REAPERAPI_MINIMAL)
  6725.         {(void**)&LICE_MeasureText,"LICE_MeasureText"},
  6726.       #endif
  6727.       #if defined(REAPERAPI_WANT_LICE_MultiplyAddRect) || !defined(REAPERAPI_MINIMAL)
  6728.         {(void**)&LICE_MultiplyAddRect,"LICE_MultiplyAddRect"},
  6729.       #endif
  6730.       #if defined(REAPERAPI_WANT_LICE_PutPixel) || !defined(REAPERAPI_MINIMAL)
  6731.         {(void**)&LICE_PutPixel,"LICE_PutPixel"},
  6732.       #endif
  6733.       #if defined(REAPERAPI_WANT_LICE_RotatedBlit) || !defined(REAPERAPI_MINIMAL)
  6734.         {(void**)&LICE_RotatedBlit,"LICE_RotatedBlit"},
  6735.       #endif
  6736.       #if defined(REAPERAPI_WANT_LICE_RoundRect) || !defined(REAPERAPI_MINIMAL)
  6737.         {(void**)&LICE_RoundRect,"LICE_RoundRect"},
  6738.       #endif
  6739.       #if defined(REAPERAPI_WANT_LICE_ScaledBlit) || !defined(REAPERAPI_MINIMAL)
  6740.         {(void**)&LICE_ScaledBlit,"LICE_ScaledBlit"},
  6741.       #endif
  6742.       #if defined(REAPERAPI_WANT_LICE_SimpleFill) || !defined(REAPERAPI_MINIMAL)
  6743.         {(void**)&LICE_SimpleFill,"LICE_SimpleFill"},
  6744.       #endif
  6745.  
  6746.     #endif // !REAPERAPI_NO_LICE
  6747.  
  6748.       #if defined(REAPERAPI_WANT_Loop_OnArrow) || !defined(REAPERAPI_MINIMAL)
  6749.         {(void**)&Loop_OnArrow,"Loop_OnArrow"},
  6750.       #endif
  6751.       #if defined(REAPERAPI_WANT_Main_OnCommand) || !defined(REAPERAPI_MINIMAL)
  6752.         {(void**)&Main_OnCommand,"Main_OnCommand"},
  6753.       #endif
  6754.       #if defined(REAPERAPI_WANT_Main_OnCommandEx) || !defined(REAPERAPI_MINIMAL)
  6755.         {(void**)&Main_OnCommandEx,"Main_OnCommandEx"},
  6756.       #endif
  6757.       #if defined(REAPERAPI_WANT_Main_openProject) || !defined(REAPERAPI_MINIMAL)
  6758.         {(void**)&Main_openProject,"Main_openProject"},
  6759.       #endif
  6760.       #if defined(REAPERAPI_WANT_Main_SaveProject) || !defined(REAPERAPI_MINIMAL)
  6761.         {(void**)&Main_SaveProject,"Main_SaveProject"},
  6762.       #endif
  6763.       #if defined(REAPERAPI_WANT_Main_UpdateLoopInfo) || !defined(REAPERAPI_MINIMAL)
  6764.         {(void**)&Main_UpdateLoopInfo,"Main_UpdateLoopInfo"},
  6765.       #endif
  6766.       #if defined(REAPERAPI_WANT_MarkProjectDirty) || !defined(REAPERAPI_MINIMAL)
  6767.         {(void**)&MarkProjectDirty,"MarkProjectDirty"},
  6768.       #endif
  6769.       #if defined(REAPERAPI_WANT_MarkTrackItemsDirty) || !defined(REAPERAPI_MINIMAL)
  6770.         {(void**)&MarkTrackItemsDirty,"MarkTrackItemsDirty"},
  6771.       #endif
  6772.       #if defined(REAPERAPI_WANT_Master_GetPlayRate) || !defined(REAPERAPI_MINIMAL)
  6773.         {(void**)&Master_GetPlayRate,"Master_GetPlayRate"},
  6774.       #endif
  6775.       #if defined(REAPERAPI_WANT_Master_GetPlayRateAtTime) || !defined(REAPERAPI_MINIMAL)
  6776.         {(void**)&Master_GetPlayRateAtTime,"Master_GetPlayRateAtTime"},
  6777.       #endif
  6778.       #if defined(REAPERAPI_WANT_Master_GetTempo) || !defined(REAPERAPI_MINIMAL)
  6779.         {(void**)&Master_GetTempo,"Master_GetTempo"},
  6780.       #endif
  6781.       #if defined(REAPERAPI_WANT_Master_NormalizePlayRate) || !defined(REAPERAPI_MINIMAL)
  6782.         {(void**)&Master_NormalizePlayRate,"Master_NormalizePlayRate"},
  6783.       #endif
  6784.       #if defined(REAPERAPI_WANT_Master_NormalizeTempo) || !defined(REAPERAPI_MINIMAL)
  6785.         {(void**)&Master_NormalizeTempo,"Master_NormalizeTempo"},
  6786.       #endif
  6787.       #if defined(REAPERAPI_WANT_MB) || !defined(REAPERAPI_MINIMAL)
  6788.         {(void**)&MB,"MB"},
  6789.       #endif
  6790.       #if defined(REAPERAPI_WANT_MediaItemDescendsFromTrack) || !defined(REAPERAPI_MINIMAL)
  6791.         {(void**)&MediaItemDescendsFromTrack,"MediaItemDescendsFromTrack"},
  6792.       #endif
  6793.       #if defined(REAPERAPI_WANT_MIDI_CountEvts) || !defined(REAPERAPI_MINIMAL)
  6794.         {(void**)&MIDI_CountEvts,"MIDI_CountEvts"},
  6795.       #endif
  6796.       #if defined(REAPERAPI_WANT_MIDI_DeleteCC) || !defined(REAPERAPI_MINIMAL)
  6797.         {(void**)&MIDI_DeleteCC,"MIDI_DeleteCC"},
  6798.       #endif
  6799.       #if defined(REAPERAPI_WANT_MIDI_DeleteEvt) || !defined(REAPERAPI_MINIMAL)
  6800.         {(void**)&MIDI_DeleteEvt,"MIDI_DeleteEvt"},
  6801.       #endif
  6802.       #if defined(REAPERAPI_WANT_MIDI_DeleteNote) || !defined(REAPERAPI_MINIMAL)
  6803.         {(void**)&MIDI_DeleteNote,"MIDI_DeleteNote"},
  6804.       #endif
  6805.       #if defined(REAPERAPI_WANT_MIDI_DeleteTextSysexEvt) || !defined(REAPERAPI_MINIMAL)
  6806.         {(void**)&MIDI_DeleteTextSysexEvt,"MIDI_DeleteTextSysexEvt"},
  6807.       #endif
  6808.       #if defined(REAPERAPI_WANT_MIDI_EnumSelCC) || !defined(REAPERAPI_MINIMAL)
  6809.         {(void**)&MIDI_EnumSelCC,"MIDI_EnumSelCC"},
  6810.       #endif
  6811.       #if defined(REAPERAPI_WANT_MIDI_EnumSelEvts) || !defined(REAPERAPI_MINIMAL)
  6812.         {(void**)&MIDI_EnumSelEvts,"MIDI_EnumSelEvts"},
  6813.       #endif
  6814.       #if defined(REAPERAPI_WANT_MIDI_EnumSelNotes) || !defined(REAPERAPI_MINIMAL)
  6815.         {(void**)&MIDI_EnumSelNotes,"MIDI_EnumSelNotes"},
  6816.       #endif
  6817.       #if defined(REAPERAPI_WANT_MIDI_EnumSelTextSysexEvts) || !defined(REAPERAPI_MINIMAL)
  6818.         {(void**)&MIDI_EnumSelTextSysexEvts,"MIDI_EnumSelTextSysexEvts"},
  6819.       #endif
  6820.       #if defined(REAPERAPI_WANT_MIDI_eventlist_Create) || !defined(REAPERAPI_MINIMAL)
  6821.         {(void**)&MIDI_eventlist_Create,"MIDI_eventlist_Create"},
  6822.       #endif
  6823.       #if defined(REAPERAPI_WANT_MIDI_eventlist_Destroy) || !defined(REAPERAPI_MINIMAL)
  6824.         {(void**)&MIDI_eventlist_Destroy,"MIDI_eventlist_Destroy"},
  6825.       #endif
  6826.       #if defined(REAPERAPI_WANT_MIDI_GetCC) || !defined(REAPERAPI_MINIMAL)
  6827.         {(void**)&MIDI_GetCC,"MIDI_GetCC"},
  6828.       #endif
  6829.       #if defined(REAPERAPI_WANT_MIDI_GetEvt) || !defined(REAPERAPI_MINIMAL)
  6830.         {(void**)&MIDI_GetEvt,"MIDI_GetEvt"},
  6831.       #endif
  6832.       #if defined(REAPERAPI_WANT_MIDI_GetGrid) || !defined(REAPERAPI_MINIMAL)
  6833.         {(void**)&MIDI_GetGrid,"MIDI_GetGrid"},
  6834.       #endif
  6835.       #if defined(REAPERAPI_WANT_MIDI_GetHash) || !defined(REAPERAPI_MINIMAL)
  6836.         {(void**)&MIDI_GetHash,"MIDI_GetHash"},
  6837.       #endif
  6838.       #if defined(REAPERAPI_WANT_MIDI_GetNote) || !defined(REAPERAPI_MINIMAL)
  6839.         {(void**)&MIDI_GetNote,"MIDI_GetNote"},
  6840.       #endif
  6841.       #if defined(REAPERAPI_WANT_MIDI_GetPPQPos_EndOfMeasure) || !defined(REAPERAPI_MINIMAL)
  6842.         {(void**)&MIDI_GetPPQPos_EndOfMeasure,"MIDI_GetPPQPos_EndOfMeasure"},
  6843.       #endif
  6844.       #if defined(REAPERAPI_WANT_MIDI_GetPPQPos_StartOfMeasure) || !defined(REAPERAPI_MINIMAL)
  6845.         {(void**)&MIDI_GetPPQPos_StartOfMeasure,"MIDI_GetPPQPos_StartOfMeasure"},
  6846.       #endif
  6847.       #if defined(REAPERAPI_WANT_MIDI_GetPPQPosFromProjQN) || !defined(REAPERAPI_MINIMAL)
  6848.         {(void**)&MIDI_GetPPQPosFromProjQN,"MIDI_GetPPQPosFromProjQN"},
  6849.       #endif
  6850.       #if defined(REAPERAPI_WANT_MIDI_GetPPQPosFromProjTime) || !defined(REAPERAPI_MINIMAL)
  6851.         {(void**)&MIDI_GetPPQPosFromProjTime,"MIDI_GetPPQPosFromProjTime"},
  6852.       #endif
  6853.       #if defined(REAPERAPI_WANT_MIDI_GetProjQNFromPPQPos) || !defined(REAPERAPI_MINIMAL)
  6854.         {(void**)&MIDI_GetProjQNFromPPQPos,"MIDI_GetProjQNFromPPQPos"},
  6855.       #endif
  6856.       #if defined(REAPERAPI_WANT_MIDI_GetProjTimeFromPPQPos) || !defined(REAPERAPI_MINIMAL)
  6857.         {(void**)&MIDI_GetProjTimeFromPPQPos,"MIDI_GetProjTimeFromPPQPos"},
  6858.       #endif
  6859.       #if defined(REAPERAPI_WANT_MIDI_GetScale) || !defined(REAPERAPI_MINIMAL)
  6860.         {(void**)&MIDI_GetScale,"MIDI_GetScale"},
  6861.       #endif
  6862.       #if defined(REAPERAPI_WANT_MIDI_GetTextSysexEvt) || !defined(REAPERAPI_MINIMAL)
  6863.         {(void**)&MIDI_GetTextSysexEvt,"MIDI_GetTextSysexEvt"},
  6864.       #endif
  6865.       #if defined(REAPERAPI_WANT_MIDI_GetTrackHash) || !defined(REAPERAPI_MINIMAL)
  6866.         {(void**)&MIDI_GetTrackHash,"MIDI_GetTrackHash"},
  6867.       #endif
  6868.       #if defined(REAPERAPI_WANT_MIDI_InsertCC) || !defined(REAPERAPI_MINIMAL)
  6869.         {(void**)&MIDI_InsertCC,"MIDI_InsertCC"},
  6870.       #endif
  6871.       #if defined(REAPERAPI_WANT_MIDI_InsertEvt) || !defined(REAPERAPI_MINIMAL)
  6872.         {(void**)&MIDI_InsertEvt,"MIDI_InsertEvt"},
  6873.       #endif
  6874.       #if defined(REAPERAPI_WANT_MIDI_InsertNote) || !defined(REAPERAPI_MINIMAL)
  6875.         {(void**)&MIDI_InsertNote,"MIDI_InsertNote"},
  6876.       #endif
  6877.       #if defined(REAPERAPI_WANT_MIDI_InsertTextSysexEvt) || !defined(REAPERAPI_MINIMAL)
  6878.         {(void**)&MIDI_InsertTextSysexEvt,"MIDI_InsertTextSysexEvt"},
  6879.       #endif
  6880.       #if defined(REAPERAPI_WANT_midi_reinit) || !defined(REAPERAPI_MINIMAL)
  6881.         {(void**)&midi_reinit,"midi_reinit"},
  6882.       #endif
  6883.       #if defined(REAPERAPI_WANT_MIDI_SelectAll) || !defined(REAPERAPI_MINIMAL)
  6884.         {(void**)&MIDI_SelectAll,"MIDI_SelectAll"},
  6885.       #endif
  6886.       #if defined(REAPERAPI_WANT_MIDI_SetCC) || !defined(REAPERAPI_MINIMAL)
  6887.         {(void**)&MIDI_SetCC,"MIDI_SetCC"},
  6888.       #endif
  6889.       #if defined(REAPERAPI_WANT_MIDI_SetEvt) || !defined(REAPERAPI_MINIMAL)
  6890.         {(void**)&MIDI_SetEvt,"MIDI_SetEvt"},
  6891.       #endif
  6892.       #if defined(REAPERAPI_WANT_MIDI_SetItemExtents) || !defined(REAPERAPI_MINIMAL)
  6893.         {(void**)&MIDI_SetItemExtents,"MIDI_SetItemExtents"},
  6894.       #endif
  6895.       #if defined(REAPERAPI_WANT_MIDI_SetNote) || !defined(REAPERAPI_MINIMAL)
  6896.         {(void**)&MIDI_SetNote,"MIDI_SetNote"},
  6897.       #endif
  6898.       #if defined(REAPERAPI_WANT_MIDI_SetTextSysexEvt) || !defined(REAPERAPI_MINIMAL)
  6899.         {(void**)&MIDI_SetTextSysexEvt,"MIDI_SetTextSysexEvt"},
  6900.       #endif
  6901.       #if defined(REAPERAPI_WANT_MIDI_Sort) || !defined(REAPERAPI_MINIMAL)
  6902.         {(void**)&MIDI_Sort,"MIDI_Sort"},
  6903.       #endif
  6904.       #if defined(REAPERAPI_WANT_MIDIEditor_GetActive) || !defined(REAPERAPI_MINIMAL)
  6905.         {(void**)&MIDIEditor_GetActive,"MIDIEditor_GetActive"},
  6906.       #endif
  6907.       #if defined(REAPERAPI_WANT_MIDIEditor_GetMode) || !defined(REAPERAPI_MINIMAL)
  6908.         {(void**)&MIDIEditor_GetMode,"MIDIEditor_GetMode"},
  6909.       #endif
  6910.       #if defined(REAPERAPI_WANT_MIDIEditor_GetSetting_int) || !defined(REAPERAPI_MINIMAL)
  6911.         {(void**)&MIDIEditor_GetSetting_int,"MIDIEditor_GetSetting_int"},
  6912.       #endif
  6913.       #if defined(REAPERAPI_WANT_MIDIEditor_GetSetting_str) || !defined(REAPERAPI_MINIMAL)
  6914.         {(void**)&MIDIEditor_GetSetting_str,"MIDIEditor_GetSetting_str"},
  6915.       #endif
  6916.       #if defined(REAPERAPI_WANT_MIDIEditor_GetTake) || !defined(REAPERAPI_MINIMAL)
  6917.         {(void**)&MIDIEditor_GetTake,"MIDIEditor_GetTake"},
  6918.       #endif
  6919.       #if defined(REAPERAPI_WANT_MIDIEditor_LastFocused_OnCommand) || !defined(REAPERAPI_MINIMAL)
  6920.         {(void**)&MIDIEditor_LastFocused_OnCommand,"MIDIEditor_LastFocused_OnCommand"},
  6921.       #endif
  6922.       #if defined(REAPERAPI_WANT_MIDIEditor_OnCommand) || !defined(REAPERAPI_MINIMAL)
  6923.         {(void**)&MIDIEditor_OnCommand,"MIDIEditor_OnCommand"},
  6924.       #endif
  6925.       #if defined(REAPERAPI_WANT_mkpanstr) || !defined(REAPERAPI_MINIMAL)
  6926.         {(void**)&mkpanstr,"mkpanstr"},
  6927.       #endif
  6928.       #if defined(REAPERAPI_WANT_mkvolpanstr) || !defined(REAPERAPI_MINIMAL)
  6929.         {(void**)&mkvolpanstr,"mkvolpanstr"},
  6930.       #endif
  6931.       #if defined(REAPERAPI_WANT_mkvolstr) || !defined(REAPERAPI_MINIMAL)
  6932.         {(void**)&mkvolstr,"mkvolstr"},
  6933.       #endif
  6934.       #if defined(REAPERAPI_WANT_MoveEditCursor) || !defined(REAPERAPI_MINIMAL)
  6935.         {(void**)&MoveEditCursor,"MoveEditCursor"},
  6936.       #endif
  6937.       #if defined(REAPERAPI_WANT_MoveMediaItemToTrack) || !defined(REAPERAPI_MINIMAL)
  6938.         {(void**)&MoveMediaItemToTrack,"MoveMediaItemToTrack"},
  6939.       #endif
  6940.       #if defined(REAPERAPI_WANT_MuteAllTracks) || !defined(REAPERAPI_MINIMAL)
  6941.         {(void**)&MuteAllTracks,"MuteAllTracks"},
  6942.       #endif
  6943.       #if defined(REAPERAPI_WANT_my_getViewport) || !defined(REAPERAPI_MINIMAL)
  6944.         {(void**)&my_getViewport,"my_getViewport"},
  6945.       #endif
  6946.       #if defined(REAPERAPI_WANT_NamedCommandLookup) || !defined(REAPERAPI_MINIMAL)
  6947.         {(void**)&NamedCommandLookup,"NamedCommandLookup"},
  6948.       #endif
  6949.       #if defined(REAPERAPI_WANT_OnPauseButton) || !defined(REAPERAPI_MINIMAL)
  6950.         {(void**)&OnPauseButton,"OnPauseButton"},
  6951.       #endif
  6952.       #if defined(REAPERAPI_WANT_OnPauseButtonEx) || !defined(REAPERAPI_MINIMAL)
  6953.         {(void**)&OnPauseButtonEx,"OnPauseButtonEx"},
  6954.       #endif
  6955.       #if defined(REAPERAPI_WANT_OnPlayButton) || !defined(REAPERAPI_MINIMAL)
  6956.         {(void**)&OnPlayButton,"OnPlayButton"},
  6957.       #endif
  6958.       #if defined(REAPERAPI_WANT_OnPlayButtonEx) || !defined(REAPERAPI_MINIMAL)
  6959.         {(void**)&OnPlayButtonEx,"OnPlayButtonEx"},
  6960.       #endif
  6961.       #if defined(REAPERAPI_WANT_OnStopButton) || !defined(REAPERAPI_MINIMAL)
  6962.         {(void**)&OnStopButton,"OnStopButton"},
  6963.       #endif
  6964.       #if defined(REAPERAPI_WANT_OnStopButtonEx) || !defined(REAPERAPI_MINIMAL)
  6965.         {(void**)&OnStopButtonEx,"OnStopButtonEx"},
  6966.       #endif
  6967.       #if defined(REAPERAPI_WANT_OpenColorThemeFile) || !defined(REAPERAPI_MINIMAL)
  6968.         {(void**)&OpenColorThemeFile,"OpenColorThemeFile"},
  6969.       #endif
  6970.       #if defined(REAPERAPI_WANT_OpenMediaExplorer) || !defined(REAPERAPI_MINIMAL)
  6971.         {(void**)&OpenMediaExplorer,"OpenMediaExplorer"},
  6972.       #endif
  6973.       #if defined(REAPERAPI_WANT_OscLocalMessageToHost) || !defined(REAPERAPI_MINIMAL)
  6974.         {(void**)&OscLocalMessageToHost,"OscLocalMessageToHost"},
  6975.       #endif
  6976.       #if defined(REAPERAPI_WANT_parse_timestr) || !defined(REAPERAPI_MINIMAL)
  6977.         {(void**)&parse_timestr,"parse_timestr"},
  6978.       #endif
  6979.       #if defined(REAPERAPI_WANT_parse_timestr_len) || !defined(REAPERAPI_MINIMAL)
  6980.         {(void**)&parse_timestr_len,"parse_timestr_len"},
  6981.       #endif
  6982.       #if defined(REAPERAPI_WANT_parse_timestr_pos) || !defined(REAPERAPI_MINIMAL)
  6983.         {(void**)&parse_timestr_pos,"parse_timestr_pos"},
  6984.       #endif
  6985.       #if defined(REAPERAPI_WANT_parsepanstr) || !defined(REAPERAPI_MINIMAL)
  6986.         {(void**)&parsepanstr,"parsepanstr"},
  6987.       #endif
  6988.       #if defined(REAPERAPI_WANT_PCM_Sink_Create) || !defined(REAPERAPI_MINIMAL)
  6989.         {(void**)&PCM_Sink_Create,"PCM_Sink_Create"},
  6990.       #endif
  6991.       #if defined(REAPERAPI_WANT_PCM_Sink_CreateEx) || !defined(REAPERAPI_MINIMAL)
  6992.         {(void**)&PCM_Sink_CreateEx,"PCM_Sink_CreateEx"},
  6993.       #endif
  6994.       #if defined(REAPERAPI_WANT_PCM_Sink_CreateMIDIFile) || !defined(REAPERAPI_MINIMAL)
  6995.         {(void**)&PCM_Sink_CreateMIDIFile,"PCM_Sink_CreateMIDIFile"},
  6996.       #endif
  6997.       #if defined(REAPERAPI_WANT_PCM_Sink_CreateMIDIFileEx) || !defined(REAPERAPI_MINIMAL)
  6998.         {(void**)&PCM_Sink_CreateMIDIFileEx,"PCM_Sink_CreateMIDIFileEx"},
  6999.       #endif
  7000.       #if defined(REAPERAPI_WANT_PCM_Sink_Enum) || !defined(REAPERAPI_MINIMAL)
  7001.         {(void**)&PCM_Sink_Enum,"PCM_Sink_Enum"},
  7002.       #endif
  7003.       #if defined(REAPERAPI_WANT_PCM_Sink_GetExtension) || !defined(REAPERAPI_MINIMAL)
  7004.         {(void**)&PCM_Sink_GetExtension,"PCM_Sink_GetExtension"},
  7005.       #endif
  7006.       #if defined(REAPERAPI_WANT_PCM_Sink_ShowConfig) || !defined(REAPERAPI_MINIMAL)
  7007.         {(void**)&PCM_Sink_ShowConfig,"PCM_Sink_ShowConfig"},
  7008.       #endif
  7009.       #if defined(REAPERAPI_WANT_PCM_Source_CreateFromFile) || !defined(REAPERAPI_MINIMAL)
  7010.         {(void**)&PCM_Source_CreateFromFile,"PCM_Source_CreateFromFile"},
  7011.       #endif
  7012.       #if defined(REAPERAPI_WANT_PCM_Source_CreateFromFileEx) || !defined(REAPERAPI_MINIMAL)
  7013.         {(void**)&PCM_Source_CreateFromFileEx,"PCM_Source_CreateFromFileEx"},
  7014.       #endif
  7015.       #if defined(REAPERAPI_WANT_PCM_Source_CreateFromSimple) || !defined(REAPERAPI_MINIMAL)
  7016.         {(void**)&PCM_Source_CreateFromSimple,"PCM_Source_CreateFromSimple"},
  7017.       #endif
  7018.       #if defined(REAPERAPI_WANT_PCM_Source_CreateFromType) || !defined(REAPERAPI_MINIMAL)
  7019.         {(void**)&PCM_Source_CreateFromType,"PCM_Source_CreateFromType"},
  7020.       #endif
  7021.       #if defined(REAPERAPI_WANT_PCM_Source_Destroy) || !defined(REAPERAPI_MINIMAL)
  7022.         {(void**)&PCM_Source_Destroy,"PCM_Source_Destroy"},
  7023.       #endif
  7024.       #if defined(REAPERAPI_WANT_PCM_Source_GetSectionInfo) || !defined(REAPERAPI_MINIMAL)
  7025.         {(void**)&PCM_Source_GetSectionInfo,"PCM_Source_GetSectionInfo"},
  7026.       #endif
  7027.       #if defined(REAPERAPI_WANT_PeakBuild_Create) || !defined(REAPERAPI_MINIMAL)
  7028.         {(void**)&PeakBuild_Create,"PeakBuild_Create"},
  7029.       #endif
  7030.       #if defined(REAPERAPI_WANT_PeakGet_Create) || !defined(REAPERAPI_MINIMAL)
  7031.         {(void**)&PeakGet_Create,"PeakGet_Create"},
  7032.       #endif
  7033.       #if defined(REAPERAPI_WANT_PlayPreview) || !defined(REAPERAPI_MINIMAL)
  7034.         {(void**)&PlayPreview,"PlayPreview"},
  7035.       #endif
  7036.       #if defined(REAPERAPI_WANT_PlayPreviewEx) || !defined(REAPERAPI_MINIMAL)
  7037.         {(void**)&PlayPreviewEx,"PlayPreviewEx"},
  7038.       #endif
  7039.       #if defined(REAPERAPI_WANT_PlayTrackPreview) || !defined(REAPERAPI_MINIMAL)
  7040.         {(void**)&PlayTrackPreview,"PlayTrackPreview"},
  7041.       #endif
  7042.       #if defined(REAPERAPI_WANT_PlayTrackPreview2) || !defined(REAPERAPI_MINIMAL)
  7043.         {(void**)&PlayTrackPreview2,"PlayTrackPreview2"},
  7044.       #endif
  7045.       #if defined(REAPERAPI_WANT_PlayTrackPreview2Ex) || !defined(REAPERAPI_MINIMAL)
  7046.         {(void**)&PlayTrackPreview2Ex,"PlayTrackPreview2Ex"},
  7047.       #endif
  7048.       #if defined(REAPERAPI_WANT_plugin_getapi) || !defined(REAPERAPI_MINIMAL)
  7049.         {(void**)&plugin_getapi,"plugin_getapi"},
  7050.       #endif
  7051.       #if defined(REAPERAPI_WANT_plugin_getFilterList) || !defined(REAPERAPI_MINIMAL)
  7052.         {(void**)&plugin_getFilterList,"plugin_getFilterList"},
  7053.       #endif
  7054.       #if defined(REAPERAPI_WANT_plugin_getImportableProjectFilterList) || !defined(REAPERAPI_MINIMAL)
  7055.         {(void**)&plugin_getImportableProjectFilterList,"plugin_getImportableProjectFilterList"},
  7056.       #endif
  7057.       #if defined(REAPERAPI_WANT_plugin_register) || !defined(REAPERAPI_MINIMAL)
  7058.         {(void**)&plugin_register,"plugin_register"},
  7059.       #endif
  7060.       #if defined(REAPERAPI_WANT_PluginWantsAlwaysRunFx) || !defined(REAPERAPI_MINIMAL)
  7061.         {(void**)&PluginWantsAlwaysRunFx,"PluginWantsAlwaysRunFx"},
  7062.       #endif
  7063.       #if defined(REAPERAPI_WANT_PreventUIRefresh) || !defined(REAPERAPI_MINIMAL)
  7064.         {(void**)&PreventUIRefresh,"PreventUIRefresh"},
  7065.       #endif
  7066.       #if defined(REAPERAPI_WANT_projectconfig_var_addr) || !defined(REAPERAPI_MINIMAL)
  7067.         {(void**)&projectconfig_var_addr,"projectconfig_var_addr"},
  7068.       #endif
  7069.       #if defined(REAPERAPI_WANT_projectconfig_var_getoffs) || !defined(REAPERAPI_MINIMAL)
  7070.         {(void**)&projectconfig_var_getoffs,"projectconfig_var_getoffs"},
  7071.       #endif
  7072.       #if defined(REAPERAPI_WANT_ReaperGetPitchShiftAPI) || !defined(REAPERAPI_MINIMAL)
  7073.         {(void**)&ReaperGetPitchShiftAPI,"ReaperGetPitchShiftAPI"},
  7074.       #endif
  7075.       #if defined(REAPERAPI_WANT_ReaScriptError) || !defined(REAPERAPI_MINIMAL)
  7076.         {(void**)&ReaScriptError,"ReaScriptError"},
  7077.       #endif
  7078.       #if defined(REAPERAPI_WANT_RecursiveCreateDirectory) || !defined(REAPERAPI_MINIMAL)
  7079.         {(void**)&RecursiveCreateDirectory,"RecursiveCreateDirectory"},
  7080.       #endif
  7081.       #if defined(REAPERAPI_WANT_RefreshToolbar) || !defined(REAPERAPI_MINIMAL)
  7082.         {(void**)&RefreshToolbar,"RefreshToolbar"},
  7083.       #endif
  7084.       #if defined(REAPERAPI_WANT_RefreshToolbar2) || !defined(REAPERAPI_MINIMAL)
  7085.         {(void**)&RefreshToolbar2,"RefreshToolbar2"},
  7086.       #endif
  7087.       #if defined(REAPERAPI_WANT_relative_fn) || !defined(REAPERAPI_MINIMAL)
  7088.         {(void**)&relative_fn,"relative_fn"},
  7089.       #endif
  7090.       #if defined(REAPERAPI_WANT_RenderFileSection) || !defined(REAPERAPI_MINIMAL)
  7091.         {(void**)&RenderFileSection,"RenderFileSection"},
  7092.       #endif
  7093.       #if defined(REAPERAPI_WANT_Resample_EnumModes) || !defined(REAPERAPI_MINIMAL)
  7094.         {(void**)&Resample_EnumModes,"Resample_EnumModes"},
  7095.       #endif
  7096.       #if defined(REAPERAPI_WANT_Resampler_Create) || !defined(REAPERAPI_MINIMAL)
  7097.         {(void**)&Resampler_Create,"Resampler_Create"},
  7098.       #endif
  7099.       #if defined(REAPERAPI_WANT_resolve_fn) || !defined(REAPERAPI_MINIMAL)
  7100.         {(void**)&resolve_fn,"resolve_fn"},
  7101.       #endif
  7102.       #if defined(REAPERAPI_WANT_resolve_fn2) || !defined(REAPERAPI_MINIMAL)
  7103.         {(void**)&resolve_fn2,"resolve_fn2"},
  7104.       #endif
  7105.       #if defined(REAPERAPI_WANT_ReverseNamedCommandLookup) || !defined(REAPERAPI_MINIMAL)
  7106.         {(void**)&ReverseNamedCommandLookup,"ReverseNamedCommandLookup"},
  7107.       #endif
  7108.       #if defined(REAPERAPI_WANT_ScaleFromEnvelopeMode) || !defined(REAPERAPI_MINIMAL)
  7109.         {(void**)&ScaleFromEnvelopeMode,"ScaleFromEnvelopeMode"},
  7110.       #endif
  7111.       #if defined(REAPERAPI_WANT_ScaleToEnvelopeMode) || !defined(REAPERAPI_MINIMAL)
  7112.         {(void**)&ScaleToEnvelopeMode,"ScaleToEnvelopeMode"},
  7113.       #endif
  7114.       #if defined(REAPERAPI_WANT_screenset_register) || !defined(REAPERAPI_MINIMAL)
  7115.         {(void**)&screenset_register,"screenset_register"},
  7116.       #endif
  7117.       #if defined(REAPERAPI_WANT_screenset_registerNew) || !defined(REAPERAPI_MINIMAL)
  7118.         {(void**)&screenset_registerNew,"screenset_registerNew"},
  7119.       #endif
  7120.       #if defined(REAPERAPI_WANT_screenset_unregister) || !defined(REAPERAPI_MINIMAL)
  7121.         {(void**)&screenset_unregister,"screenset_unregister"},
  7122.       #endif
  7123.       #if defined(REAPERAPI_WANT_screenset_unregisterByParam) || !defined(REAPERAPI_MINIMAL)
  7124.         {(void**)&screenset_unregisterByParam,"screenset_unregisterByParam"},
  7125.       #endif
  7126.       #if defined(REAPERAPI_WANT_screenset_updateLastFocus) || !defined(REAPERAPI_MINIMAL)
  7127.         {(void**)&screenset_updateLastFocus,"screenset_updateLastFocus"},
  7128.       #endif
  7129.       #if defined(REAPERAPI_WANT_SectionFromUniqueID) || !defined(REAPERAPI_MINIMAL)
  7130.         {(void**)&SectionFromUniqueID,"SectionFromUniqueID"},
  7131.       #endif
  7132.       #if defined(REAPERAPI_WANT_SelectAllMediaItems) || !defined(REAPERAPI_MINIMAL)
  7133.         {(void**)&SelectAllMediaItems,"SelectAllMediaItems"},
  7134.       #endif
  7135.       #if defined(REAPERAPI_WANT_SelectProjectInstance) || !defined(REAPERAPI_MINIMAL)
  7136.         {(void**)&SelectProjectInstance,"SelectProjectInstance"},
  7137.       #endif
  7138.       #if defined(REAPERAPI_WANT_SendLocalOscMessage) || !defined(REAPERAPI_MINIMAL)
  7139.         {(void**)&SendLocalOscMessage,"SendLocalOscMessage"},
  7140.       #endif
  7141.       #if defined(REAPERAPI_WANT_SetActiveTake) || !defined(REAPERAPI_MINIMAL)
  7142.         {(void**)&SetActiveTake,"SetActiveTake"},
  7143.       #endif
  7144.       #if defined(REAPERAPI_WANT_SetAutomationMode) || !defined(REAPERAPI_MINIMAL)
  7145.         {(void**)&SetAutomationMode,"SetAutomationMode"},
  7146.       #endif
  7147.       #if defined(REAPERAPI_WANT_SetCurrentBPM) || !defined(REAPERAPI_MINIMAL)
  7148.         {(void**)&SetCurrentBPM,"SetCurrentBPM"},
  7149.       #endif
  7150.       #if defined(REAPERAPI_WANT_SetCursorContext) || !defined(REAPERAPI_MINIMAL)
  7151.         {(void**)&SetCursorContext,"SetCursorContext"},
  7152.       #endif
  7153.       #if defined(REAPERAPI_WANT_SetEditCurPos) || !defined(REAPERAPI_MINIMAL)
  7154.         {(void**)&SetEditCurPos,"SetEditCurPos"},
  7155.       #endif
  7156.       #if defined(REAPERAPI_WANT_SetEditCurPos2) || !defined(REAPERAPI_MINIMAL)
  7157.         {(void**)&SetEditCurPos2,"SetEditCurPos2"},
  7158.       #endif
  7159.       #if defined(REAPERAPI_WANT_SetEnvelopePoint) || !defined(REAPERAPI_MINIMAL)
  7160.         {(void**)&SetEnvelopePoint,"SetEnvelopePoint"},
  7161.       #endif
  7162.       #if defined(REAPERAPI_WANT_SetEnvelopeStateChunk) || !defined(REAPERAPI_MINIMAL)
  7163.         {(void**)&SetEnvelopeStateChunk,"SetEnvelopeStateChunk"},
  7164.       #endif
  7165.       #if defined(REAPERAPI_WANT_SetExtState) || !defined(REAPERAPI_MINIMAL)
  7166.         {(void**)&SetExtState,"SetExtState"},
  7167.       #endif
  7168.       #if defined(REAPERAPI_WANT_SetGlobalAutomationOverride) || !defined(REAPERAPI_MINIMAL)
  7169.         {(void**)&SetGlobalAutomationOverride,"SetGlobalAutomationOverride"},
  7170.       #endif
  7171.       #if defined(REAPERAPI_WANT_SetItemStateChunk) || !defined(REAPERAPI_MINIMAL)
  7172.         {(void**)&SetItemStateChunk,"SetItemStateChunk"},
  7173.       #endif
  7174.       #if defined(REAPERAPI_WANT_SetMasterTrackVisibility) || !defined(REAPERAPI_MINIMAL)
  7175.         {(void**)&SetMasterTrackVisibility,"SetMasterTrackVisibility"},
  7176.       #endif
  7177.       #if defined(REAPERAPI_WANT_SetMediaItemInfo_Value) || !defined(REAPERAPI_MINIMAL)
  7178.         {(void**)&SetMediaItemInfo_Value,"SetMediaItemInfo_Value"},
  7179.       #endif
  7180.       #if defined(REAPERAPI_WANT_SetMediaItemLength) || !defined(REAPERAPI_MINIMAL)
  7181.         {(void**)&SetMediaItemLength,"SetMediaItemLength"},
  7182.       #endif
  7183.       #if defined(REAPERAPI_WANT_SetMediaItemPosition) || !defined(REAPERAPI_MINIMAL)
  7184.         {(void**)&SetMediaItemPosition,"SetMediaItemPosition"},
  7185.       #endif
  7186.       #if defined(REAPERAPI_WANT_SetMediaItemSelected) || !defined(REAPERAPI_MINIMAL)
  7187.         {(void**)&SetMediaItemSelected,"SetMediaItemSelected"},
  7188.       #endif
  7189.       #if defined(REAPERAPI_WANT_SetMediaItemTake_Source) || !defined(REAPERAPI_MINIMAL)
  7190.         {(void**)&SetMediaItemTake_Source,"SetMediaItemTake_Source"},
  7191.       #endif
  7192.       #if defined(REAPERAPI_WANT_SetMediaItemTakeInfo_Value) || !defined(REAPERAPI_MINIMAL)
  7193.         {(void**)&SetMediaItemTakeInfo_Value,"SetMediaItemTakeInfo_Value"},
  7194.       #endif
  7195.       #if defined(REAPERAPI_WANT_SetMediaTrackInfo_Value) || !defined(REAPERAPI_MINIMAL)
  7196.         {(void**)&SetMediaTrackInfo_Value,"SetMediaTrackInfo_Value"},
  7197.       #endif
  7198.       #if defined(REAPERAPI_WANT_SetMixerScroll) || !defined(REAPERAPI_MINIMAL)
  7199.         {(void**)&SetMixerScroll,"SetMixerScroll"},
  7200.       #endif
  7201.       #if defined(REAPERAPI_WANT_SetMouseModifier) || !defined(REAPERAPI_MINIMAL)
  7202.         {(void**)&SetMouseModifier,"SetMouseModifier"},
  7203.       #endif
  7204.       #if defined(REAPERAPI_WANT_SetOnlyTrackSelected) || !defined(REAPERAPI_MINIMAL)
  7205.         {(void**)&SetOnlyTrackSelected,"SetOnlyTrackSelected"},
  7206.       #endif
  7207.       #if defined(REAPERAPI_WANT_SetProjectMarker) || !defined(REAPERAPI_MINIMAL)
  7208.         {(void**)&SetProjectMarker,"SetProjectMarker"},
  7209.       #endif
  7210.       #if defined(REAPERAPI_WANT_SetProjectMarker2) || !defined(REAPERAPI_MINIMAL)
  7211.         {(void**)&SetProjectMarker2,"SetProjectMarker2"},
  7212.       #endif
  7213.       #if defined(REAPERAPI_WANT_SetProjectMarker3) || !defined(REAPERAPI_MINIMAL)
  7214.         {(void**)&SetProjectMarker3,"SetProjectMarker3"},
  7215.       #endif
  7216.       #if defined(REAPERAPI_WANT_SetProjectMarker4) || !defined(REAPERAPI_MINIMAL)
  7217.         {(void**)&SetProjectMarker4,"SetProjectMarker4"},
  7218.       #endif
  7219.       #if defined(REAPERAPI_WANT_SetProjectMarkerByIndex) || !defined(REAPERAPI_MINIMAL)
  7220.         {(void**)&SetProjectMarkerByIndex,"SetProjectMarkerByIndex"},
  7221.       #endif
  7222.       #if defined(REAPERAPI_WANT_SetProjectMarkerByIndex2) || !defined(REAPERAPI_MINIMAL)
  7223.         {(void**)&SetProjectMarkerByIndex2,"SetProjectMarkerByIndex2"},
  7224.       #endif
  7225.       #if defined(REAPERAPI_WANT_SetProjExtState) || !defined(REAPERAPI_MINIMAL)
  7226.         {(void**)&SetProjExtState,"SetProjExtState"},
  7227.       #endif
  7228.       #if defined(REAPERAPI_WANT_SetRegionRenderMatrix) || !defined(REAPERAPI_MINIMAL)
  7229.         {(void**)&SetRegionRenderMatrix,"SetRegionRenderMatrix"},
  7230.       #endif
  7231.       #if defined(REAPERAPI_WANT_SetRenderLastError) || !defined(REAPERAPI_MINIMAL)
  7232.         {(void**)&SetRenderLastError,"SetRenderLastError"},
  7233.       #endif
  7234.       #if defined(REAPERAPI_WANT_SetTakeStretchMarker) || !defined(REAPERAPI_MINIMAL)
  7235.         {(void**)&SetTakeStretchMarker,"SetTakeStretchMarker"},
  7236.       #endif
  7237.       #if defined(REAPERAPI_WANT_SetTakeStretchMarkerSlope) || !defined(REAPERAPI_MINIMAL)
  7238.         {(void**)&SetTakeStretchMarkerSlope,"SetTakeStretchMarkerSlope"},
  7239.       #endif
  7240.       #if defined(REAPERAPI_WANT_SetTempoTimeSigMarker) || !defined(REAPERAPI_MINIMAL)
  7241.         {(void**)&SetTempoTimeSigMarker,"SetTempoTimeSigMarker"},
  7242.       #endif
  7243.       #if defined(REAPERAPI_WANT_SetToggleCommandState) || !defined(REAPERAPI_MINIMAL)
  7244.         {(void**)&SetToggleCommandState,"SetToggleCommandState"},
  7245.       #endif
  7246.       #if defined(REAPERAPI_WANT_SetTrackAutomationMode) || !defined(REAPERAPI_MINIMAL)
  7247.         {(void**)&SetTrackAutomationMode,"SetTrackAutomationMode"},
  7248.       #endif
  7249.       #if defined(REAPERAPI_WANT_SetTrackColor) || !defined(REAPERAPI_MINIMAL)
  7250.         {(void**)&SetTrackColor,"SetTrackColor"},
  7251.       #endif
  7252.       #if defined(REAPERAPI_WANT_SetTrackMIDINoteName) || !defined(REAPERAPI_MINIMAL)
  7253.         {(void**)&SetTrackMIDINoteName,"SetTrackMIDINoteName"},
  7254.       #endif
  7255.       #if defined(REAPERAPI_WANT_SetTrackMIDINoteNameEx) || !defined(REAPERAPI_MINIMAL)
  7256.         {(void**)&SetTrackMIDINoteNameEx,"SetTrackMIDINoteNameEx"},
  7257.       #endif
  7258.       #if defined(REAPERAPI_WANT_SetTrackSelected) || !defined(REAPERAPI_MINIMAL)
  7259.         {(void**)&SetTrackSelected,"SetTrackSelected"},
  7260.       #endif
  7261.       #if defined(REAPERAPI_WANT_SetTrackSendUIPan) || !defined(REAPERAPI_MINIMAL)
  7262.         {(void**)&SetTrackSendUIPan,"SetTrackSendUIPan"},
  7263.       #endif
  7264.       #if defined(REAPERAPI_WANT_SetTrackSendUIVol) || !defined(REAPERAPI_MINIMAL)
  7265.         {(void**)&SetTrackSendUIVol,"SetTrackSendUIVol"},
  7266.       #endif
  7267.       #if defined(REAPERAPI_WANT_SetTrackStateChunk) || !defined(REAPERAPI_MINIMAL)
  7268.         {(void**)&SetTrackStateChunk,"SetTrackStateChunk"},
  7269.       #endif
  7270.       #if defined(REAPERAPI_WANT_ShowActionList) || !defined(REAPERAPI_MINIMAL)
  7271.         {(void**)&ShowActionList,"ShowActionList"},
  7272.       #endif
  7273.       #if defined(REAPERAPI_WANT_ShowConsoleMsg) || !defined(REAPERAPI_MINIMAL)
  7274.         {(void**)&ShowConsoleMsg,"ShowConsoleMsg"},
  7275.       #endif
  7276.       #if defined(REAPERAPI_WANT_ShowMessageBox) || !defined(REAPERAPI_MINIMAL)
  7277.         {(void**)&ShowMessageBox,"ShowMessageBox"},
  7278.       #endif
  7279.       #if defined(REAPERAPI_WANT_SLIDER2DB) || !defined(REAPERAPI_MINIMAL)
  7280.         {(void**)&SLIDER2DB,"SLIDER2DB"},
  7281.       #endif
  7282.       #if defined(REAPERAPI_WANT_SnapToGrid) || !defined(REAPERAPI_MINIMAL)
  7283.         {(void**)&SnapToGrid,"SnapToGrid"},
  7284.       #endif
  7285.       #if defined(REAPERAPI_WANT_SoloAllTracks) || !defined(REAPERAPI_MINIMAL)
  7286.         {(void**)&SoloAllTracks,"SoloAllTracks"},
  7287.       #endif
  7288.       #if defined(REAPERAPI_WANT_Splash_GetWnd) || !defined(REAPERAPI_MINIMAL)
  7289.         {(void**)&Splash_GetWnd,"Splash_GetWnd"},
  7290.       #endif
  7291.       #if defined(REAPERAPI_WANT_SplitMediaItem) || !defined(REAPERAPI_MINIMAL)
  7292.         {(void**)&SplitMediaItem,"SplitMediaItem"},
  7293.       #endif
  7294.       #if defined(REAPERAPI_WANT_StopPreview) || !defined(REAPERAPI_MINIMAL)
  7295.         {(void**)&StopPreview,"StopPreview"},
  7296.       #endif
  7297.       #if defined(REAPERAPI_WANT_StopTrackPreview) || !defined(REAPERAPI_MINIMAL)
  7298.         {(void**)&StopTrackPreview,"StopTrackPreview"},
  7299.       #endif
  7300.       #if defined(REAPERAPI_WANT_StopTrackPreview2) || !defined(REAPERAPI_MINIMAL)
  7301.         {(void**)&StopTrackPreview2,"StopTrackPreview2"},
  7302.       #endif
  7303.       #if defined(REAPERAPI_WANT_stringToGuid) || !defined(REAPERAPI_MINIMAL)
  7304.         {(void**)&stringToGuid,"stringToGuid"},
  7305.       #endif
  7306.       #if defined(REAPERAPI_WANT_StuffMIDIMessage) || !defined(REAPERAPI_MINIMAL)
  7307.         {(void**)&StuffMIDIMessage,"StuffMIDIMessage"},
  7308.       #endif
  7309.       #if defined(REAPERAPI_WANT_TakeIsMIDI) || !defined(REAPERAPI_MINIMAL)
  7310.         {(void**)&TakeIsMIDI,"TakeIsMIDI"},
  7311.       #endif
  7312.       #if defined(REAPERAPI_WANT_time_precise) || !defined(REAPERAPI_MINIMAL)
  7313.         {(void**)&time_precise,"time_precise"},
  7314.       #endif
  7315.       #if defined(REAPERAPI_WANT_TimeMap2_beatsToTime) || !defined(REAPERAPI_MINIMAL)
  7316.         {(void**)&TimeMap2_beatsToTime,"TimeMap2_beatsToTime"},
  7317.       #endif
  7318.       #if defined(REAPERAPI_WANT_TimeMap2_GetDividedBpmAtTime) || !defined(REAPERAPI_MINIMAL)
  7319.         {(void**)&TimeMap2_GetDividedBpmAtTime,"TimeMap2_GetDividedBpmAtTime"},
  7320.       #endif
  7321.       #if defined(REAPERAPI_WANT_TimeMap2_GetNextChangeTime) || !defined(REAPERAPI_MINIMAL)
  7322.         {(void**)&TimeMap2_GetNextChangeTime,"TimeMap2_GetNextChangeTime"},
  7323.       #endif
  7324.       #if defined(REAPERAPI_WANT_TimeMap2_QNToTime) || !defined(REAPERAPI_MINIMAL)
  7325.         {(void**)&TimeMap2_QNToTime,"TimeMap2_QNToTime"},
  7326.       #endif
  7327.       #if defined(REAPERAPI_WANT_TimeMap2_timeToBeats) || !defined(REAPERAPI_MINIMAL)
  7328.         {(void**)&TimeMap2_timeToBeats,"TimeMap2_timeToBeats"},
  7329.       #endif
  7330.       #if defined(REAPERAPI_WANT_TimeMap2_timeToQN) || !defined(REAPERAPI_MINIMAL)
  7331.         {(void**)&TimeMap2_timeToQN,"TimeMap2_timeToQN"},
  7332.       #endif
  7333.       #if defined(REAPERAPI_WANT_TimeMap_curFrameRate) || !defined(REAPERAPI_MINIMAL)
  7334.         {(void**)&TimeMap_curFrameRate,"TimeMap_curFrameRate"},
  7335.       #endif
  7336.       #if defined(REAPERAPI_WANT_TimeMap_GetDividedBpmAtTime) || !defined(REAPERAPI_MINIMAL)
  7337.         {(void**)&TimeMap_GetDividedBpmAtTime,"TimeMap_GetDividedBpmAtTime"},
  7338.       #endif
  7339.       #if defined(REAPERAPI_WANT_TimeMap_GetMeasureInfo) || !defined(REAPERAPI_MINIMAL)
  7340.         {(void**)&TimeMap_GetMeasureInfo,"TimeMap_GetMeasureInfo"},
  7341.       #endif
  7342.       #if defined(REAPERAPI_WANT_TimeMap_GetMetronomePattern) || !defined(REAPERAPI_MINIMAL)
  7343.         {(void**)&TimeMap_GetMetronomePattern,"TimeMap_GetMetronomePattern"},
  7344.       #endif
  7345.       #if defined(REAPERAPI_WANT_TimeMap_GetTimeSigAtTime) || !defined(REAPERAPI_MINIMAL)
  7346.         {(void**)&TimeMap_GetTimeSigAtTime,"TimeMap_GetTimeSigAtTime"},
  7347.       #endif
  7348.       #if defined(REAPERAPI_WANT_TimeMap_QNToMeasures) || !defined(REAPERAPI_MINIMAL)
  7349.         {(void**)&TimeMap_QNToMeasures,"TimeMap_QNToMeasures"},
  7350.       #endif
  7351.       #if defined(REAPERAPI_WANT_TimeMap_QNToTime) || !defined(REAPERAPI_MINIMAL)
  7352.         {(void**)&TimeMap_QNToTime,"TimeMap_QNToTime"},
  7353.       #endif
  7354.       #if defined(REAPERAPI_WANT_TimeMap_QNToTime_abs) || !defined(REAPERAPI_MINIMAL)
  7355.         {(void**)&TimeMap_QNToTime_abs,"TimeMap_QNToTime_abs"},
  7356.       #endif
  7357.       #if defined(REAPERAPI_WANT_TimeMap_timeToQN) || !defined(REAPERAPI_MINIMAL)
  7358.         {(void**)&TimeMap_timeToQN,"TimeMap_timeToQN"},
  7359.       #endif
  7360.       #if defined(REAPERAPI_WANT_TimeMap_timeToQN_abs) || !defined(REAPERAPI_MINIMAL)
  7361.         {(void**)&TimeMap_timeToQN_abs,"TimeMap_timeToQN_abs"},
  7362.       #endif
  7363.       #if defined(REAPERAPI_WANT_ToggleTrackSendUIMute) || !defined(REAPERAPI_MINIMAL)
  7364.         {(void**)&ToggleTrackSendUIMute,"ToggleTrackSendUIMute"},
  7365.       #endif
  7366.       #if defined(REAPERAPI_WANT_Track_GetPeakHoldDB) || !defined(REAPERAPI_MINIMAL)
  7367.         {(void**)&Track_GetPeakHoldDB,"Track_GetPeakHoldDB"},
  7368.       #endif
  7369.       #if defined(REAPERAPI_WANT_Track_GetPeakInfo) || !defined(REAPERAPI_MINIMAL)
  7370.         {(void**)&Track_GetPeakInfo,"Track_GetPeakInfo"},
  7371.       #endif
  7372.       #if defined(REAPERAPI_WANT_TrackCtl_SetToolTip) || !defined(REAPERAPI_MINIMAL)
  7373.         {(void**)&TrackCtl_SetToolTip,"TrackCtl_SetToolTip"},
  7374.       #endif
  7375.       #if defined(REAPERAPI_WANT_TrackFX_EndParamEdit) || !defined(REAPERAPI_MINIMAL)
  7376.         {(void**)&TrackFX_EndParamEdit,"TrackFX_EndParamEdit"},
  7377.       #endif
  7378.       #if defined(REAPERAPI_WANT_TrackFX_FormatParamValue) || !defined(REAPERAPI_MINIMAL)
  7379.         {(void**)&TrackFX_FormatParamValue,"TrackFX_FormatParamValue"},
  7380.       #endif
  7381.       #if defined(REAPERAPI_WANT_TrackFX_FormatParamValueNormalized) || !defined(REAPERAPI_MINIMAL)
  7382.         {(void**)&TrackFX_FormatParamValueNormalized,"TrackFX_FormatParamValueNormalized"},
  7383.       #endif
  7384.       #if defined(REAPERAPI_WANT_TrackFX_GetByName) || !defined(REAPERAPI_MINIMAL)
  7385.         {(void**)&TrackFX_GetByName,"TrackFX_GetByName"},
  7386.       #endif
  7387.       #if defined(REAPERAPI_WANT_TrackFX_GetChainVisible) || !defined(REAPERAPI_MINIMAL)
  7388.         {(void**)&TrackFX_GetChainVisible,"TrackFX_GetChainVisible"},
  7389.       #endif
  7390.       #if defined(REAPERAPI_WANT_TrackFX_GetCount) || !defined(REAPERAPI_MINIMAL)
  7391.         {(void**)&TrackFX_GetCount,"TrackFX_GetCount"},
  7392.       #endif
  7393.       #if defined(REAPERAPI_WANT_TrackFX_GetEnabled) || !defined(REAPERAPI_MINIMAL)
  7394.         {(void**)&TrackFX_GetEnabled,"TrackFX_GetEnabled"},
  7395.       #endif
  7396.       #if defined(REAPERAPI_WANT_TrackFX_GetEQ) || !defined(REAPERAPI_MINIMAL)
  7397.         {(void**)&TrackFX_GetEQ,"TrackFX_GetEQ"},
  7398.       #endif
  7399.       #if defined(REAPERAPI_WANT_TrackFX_GetEQBandEnabled) || !defined(REAPERAPI_MINIMAL)
  7400.         {(void**)&TrackFX_GetEQBandEnabled,"TrackFX_GetEQBandEnabled"},
  7401.       #endif
  7402.       #if defined(REAPERAPI_WANT_TrackFX_GetEQParam) || !defined(REAPERAPI_MINIMAL)
  7403.         {(void**)&TrackFX_GetEQParam,"TrackFX_GetEQParam"},
  7404.       #endif
  7405.       #if defined(REAPERAPI_WANT_TrackFX_GetFloatingWindow) || !defined(REAPERAPI_MINIMAL)
  7406.         {(void**)&TrackFX_GetFloatingWindow,"TrackFX_GetFloatingWindow"},
  7407.       #endif
  7408.       #if defined(REAPERAPI_WANT_TrackFX_GetFormattedParamValue) || !defined(REAPERAPI_MINIMAL)
  7409.         {(void**)&TrackFX_GetFormattedParamValue,"TrackFX_GetFormattedParamValue"},
  7410.       #endif
  7411.       #if defined(REAPERAPI_WANT_TrackFX_GetFXGUID) || !defined(REAPERAPI_MINIMAL)
  7412.         {(void**)&TrackFX_GetFXGUID,"TrackFX_GetFXGUID"},
  7413.       #endif
  7414.       #if defined(REAPERAPI_WANT_TrackFX_GetFXName) || !defined(REAPERAPI_MINIMAL)
  7415.         {(void**)&TrackFX_GetFXName,"TrackFX_GetFXName"},
  7416.       #endif
  7417.       #if defined(REAPERAPI_WANT_TrackFX_GetInstrument) || !defined(REAPERAPI_MINIMAL)
  7418.         {(void**)&TrackFX_GetInstrument,"TrackFX_GetInstrument"},
  7419.       #endif
  7420.       #if defined(REAPERAPI_WANT_TrackFX_GetNumParams) || !defined(REAPERAPI_MINIMAL)
  7421.         {(void**)&TrackFX_GetNumParams,"TrackFX_GetNumParams"},
  7422.       #endif
  7423.       #if defined(REAPERAPI_WANT_TrackFX_GetOpen) || !defined(REAPERAPI_MINIMAL)
  7424.         {(void**)&TrackFX_GetOpen,"TrackFX_GetOpen"},
  7425.       #endif
  7426.       #if defined(REAPERAPI_WANT_TrackFX_GetParam) || !defined(REAPERAPI_MINIMAL)
  7427.         {(void**)&TrackFX_GetParam,"TrackFX_GetParam"},
  7428.       #endif
  7429.       #if defined(REAPERAPI_WANT_TrackFX_GetParameterStepSizes) || !defined(REAPERAPI_MINIMAL)
  7430.         {(void**)&TrackFX_GetParameterStepSizes,"TrackFX_GetParameterStepSizes"},
  7431.       #endif
  7432.       #if defined(REAPERAPI_WANT_TrackFX_GetParamEx) || !defined(REAPERAPI_MINIMAL)
  7433.         {(void**)&TrackFX_GetParamEx,"TrackFX_GetParamEx"},
  7434.       #endif
  7435.       #if defined(REAPERAPI_WANT_TrackFX_GetParamName) || !defined(REAPERAPI_MINIMAL)
  7436.         {(void**)&TrackFX_GetParamName,"TrackFX_GetParamName"},
  7437.       #endif
  7438.       #if defined(REAPERAPI_WANT_TrackFX_GetParamNormalized) || !defined(REAPERAPI_MINIMAL)
  7439.         {(void**)&TrackFX_GetParamNormalized,"TrackFX_GetParamNormalized"},
  7440.       #endif
  7441.       #if defined(REAPERAPI_WANT_TrackFX_GetPreset) || !defined(REAPERAPI_MINIMAL)
  7442.         {(void**)&TrackFX_GetPreset,"TrackFX_GetPreset"},
  7443.       #endif
  7444.       #if defined(REAPERAPI_WANT_TrackFX_GetPresetIndex) || !defined(REAPERAPI_MINIMAL)
  7445.         {(void**)&TrackFX_GetPresetIndex,"TrackFX_GetPresetIndex"},
  7446.       #endif
  7447.       #if defined(REAPERAPI_WANT_TrackFX_NavigatePresets) || !defined(REAPERAPI_MINIMAL)
  7448.         {(void**)&TrackFX_NavigatePresets,"TrackFX_NavigatePresets"},
  7449.       #endif
  7450.       #if defined(REAPERAPI_WANT_TrackFX_SetEnabled) || !defined(REAPERAPI_MINIMAL)
  7451.         {(void**)&TrackFX_SetEnabled,"TrackFX_SetEnabled"},
  7452.       #endif
  7453.       #if defined(REAPERAPI_WANT_TrackFX_SetEQBandEnabled) || !defined(REAPERAPI_MINIMAL)
  7454.         {(void**)&TrackFX_SetEQBandEnabled,"TrackFX_SetEQBandEnabled"},
  7455.       #endif
  7456.       #if defined(REAPERAPI_WANT_TrackFX_SetEQParam) || !defined(REAPERAPI_MINIMAL)
  7457.         {(void**)&TrackFX_SetEQParam,"TrackFX_SetEQParam"},
  7458.       #endif
  7459.       #if defined(REAPERAPI_WANT_TrackFX_SetOpen) || !defined(REAPERAPI_MINIMAL)
  7460.         {(void**)&TrackFX_SetOpen,"TrackFX_SetOpen"},
  7461.       #endif
  7462.       #if defined(REAPERAPI_WANT_TrackFX_SetParam) || !defined(REAPERAPI_MINIMAL)
  7463.         {(void**)&TrackFX_SetParam,"TrackFX_SetParam"},
  7464.       #endif
  7465.       #if defined(REAPERAPI_WANT_TrackFX_SetParamNormalized) || !defined(REAPERAPI_MINIMAL)
  7466.         {(void**)&TrackFX_SetParamNormalized,"TrackFX_SetParamNormalized"},
  7467.       #endif
  7468.       #if defined(REAPERAPI_WANT_TrackFX_SetPreset) || !defined(REAPERAPI_MINIMAL)
  7469.         {(void**)&TrackFX_SetPreset,"TrackFX_SetPreset"},
  7470.       #endif
  7471.       #if defined(REAPERAPI_WANT_TrackFX_SetPresetByIndex) || !defined(REAPERAPI_MINIMAL)
  7472.         {(void**)&TrackFX_SetPresetByIndex,"TrackFX_SetPresetByIndex"},
  7473.       #endif
  7474.       #if defined(REAPERAPI_WANT_TrackFX_Show) || !defined(REAPERAPI_MINIMAL)
  7475.         {(void**)&TrackFX_Show,"TrackFX_Show"},
  7476.       #endif
  7477.       #if defined(REAPERAPI_WANT_TrackList_AdjustWindows) || !defined(REAPERAPI_MINIMAL)
  7478.         {(void**)&TrackList_AdjustWindows,"TrackList_AdjustWindows"},
  7479.       #endif
  7480.       #if defined(REAPERAPI_WANT_TrackList_UpdateAllExternalSurfaces) || !defined(REAPERAPI_MINIMAL)
  7481.         {(void**)&TrackList_UpdateAllExternalSurfaces,"TrackList_UpdateAllExternalSurfaces"},
  7482.       #endif
  7483.       #if defined(REAPERAPI_WANT_Undo_BeginBlock) || !defined(REAPERAPI_MINIMAL)
  7484.         {(void**)&Undo_BeginBlock,"Undo_BeginBlock"},
  7485.       #endif
  7486.       #if defined(REAPERAPI_WANT_Undo_BeginBlock2) || !defined(REAPERAPI_MINIMAL)
  7487.         {(void**)&Undo_BeginBlock2,"Undo_BeginBlock2"},
  7488.       #endif
  7489.       #if defined(REAPERAPI_WANT_Undo_CanRedo2) || !defined(REAPERAPI_MINIMAL)
  7490.         {(void**)&Undo_CanRedo2,"Undo_CanRedo2"},
  7491.       #endif
  7492.       #if defined(REAPERAPI_WANT_Undo_CanUndo2) || !defined(REAPERAPI_MINIMAL)
  7493.         {(void**)&Undo_CanUndo2,"Undo_CanUndo2"},
  7494.       #endif
  7495.       #if defined(REAPERAPI_WANT_Undo_DoRedo2) || !defined(REAPERAPI_MINIMAL)
  7496.         {(void**)&Undo_DoRedo2,"Undo_DoRedo2"},
  7497.       #endif
  7498.       #if defined(REAPERAPI_WANT_Undo_DoUndo2) || !defined(REAPERAPI_MINIMAL)
  7499.         {(void**)&Undo_DoUndo2,"Undo_DoUndo2"},
  7500.       #endif
  7501.       #if defined(REAPERAPI_WANT_Undo_EndBlock) || !defined(REAPERAPI_MINIMAL)
  7502.         {(void**)&Undo_EndBlock,"Undo_EndBlock"},
  7503.       #endif
  7504.       #if defined(REAPERAPI_WANT_Undo_EndBlock2) || !defined(REAPERAPI_MINIMAL)
  7505.         {(void**)&Undo_EndBlock2,"Undo_EndBlock2"},
  7506.       #endif
  7507.       #if defined(REAPERAPI_WANT_Undo_OnStateChange) || !defined(REAPERAPI_MINIMAL)
  7508.         {(void**)&Undo_OnStateChange,"Undo_OnStateChange"},
  7509.       #endif
  7510.       #if defined(REAPERAPI_WANT_Undo_OnStateChange2) || !defined(REAPERAPI_MINIMAL)
  7511.         {(void**)&Undo_OnStateChange2,"Undo_OnStateChange2"},
  7512.       #endif
  7513.       #if defined(REAPERAPI_WANT_Undo_OnStateChange_Item) || !defined(REAPERAPI_MINIMAL)
  7514.         {(void**)&Undo_OnStateChange_Item,"Undo_OnStateChange_Item"},
  7515.       #endif
  7516.       #if defined(REAPERAPI_WANT_Undo_OnStateChangeEx) || !defined(REAPERAPI_MINIMAL)
  7517.         {(void**)&Undo_OnStateChangeEx,"Undo_OnStateChangeEx"},
  7518.       #endif
  7519.       #if defined(REAPERAPI_WANT_Undo_OnStateChangeEx2) || !defined(REAPERAPI_MINIMAL)
  7520.         {(void**)&Undo_OnStateChangeEx2,"Undo_OnStateChangeEx2"},
  7521.       #endif
  7522.       #if defined(REAPERAPI_WANT_update_disk_counters) || !defined(REAPERAPI_MINIMAL)
  7523.         {(void**)&update_disk_counters,"update_disk_counters"},
  7524.       #endif
  7525.       #if defined(REAPERAPI_WANT_UpdateArrange) || !defined(REAPERAPI_MINIMAL)
  7526.         {(void**)&UpdateArrange,"UpdateArrange"},
  7527.       #endif
  7528.       #if defined(REAPERAPI_WANT_UpdateItemInProject) || !defined(REAPERAPI_MINIMAL)
  7529.         {(void**)&UpdateItemInProject,"UpdateItemInProject"},
  7530.       #endif
  7531.       #if defined(REAPERAPI_WANT_UpdateTimeline) || !defined(REAPERAPI_MINIMAL)
  7532.         {(void**)&UpdateTimeline,"UpdateTimeline"},
  7533.       #endif
  7534.       #if defined(REAPERAPI_WANT_ValidatePtr) || !defined(REAPERAPI_MINIMAL)
  7535.         {(void**)&ValidatePtr,"ValidatePtr"},
  7536.       #endif
  7537.       #if defined(REAPERAPI_WANT_ViewPrefs) || !defined(REAPERAPI_MINIMAL)
  7538.         {(void**)&ViewPrefs,"ViewPrefs"},
  7539.       #endif
  7540.       #if defined(REAPERAPI_WANT_WDL_VirtualWnd_ScaledBlitBG) || !defined(REAPERAPI_MINIMAL)
  7541.         {(void**)&WDL_VirtualWnd_ScaledBlitBG,"WDL_VirtualWnd_ScaledBlitBG"},
  7542.       #endif
  7543.       {NULL, NULL}
  7544.     };
  7545.     int i,failcnt=0;
  7546.     for (i=0;table[i].dest; i++)
  7547.       failcnt += !(*table[i].dest = getAPI(table[i].name));
  7548.     return failcnt;
  7549.   }
  7550. #else//REAPERAPI_IMPLEMENT
  7551.   int REAPERAPI_LoadAPI(void *(*getAPI)(const char *));
  7552. #endif
  7553. #endif // _REAPER_PLUGIN_FUNCTIONS_H_
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement