· 8 years ago · Mar 12, 2018, 10:36 AM
1#ifndef _REAPER_PLUGIN_FUNCTIONS_H_
2#define _REAPER_PLUGIN_FUNCTIONS_H_
3
4// REAPER API functions
5// Generated by REAPER v5.77/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)
53typedef unsigned int LICE_pixel;
54typedef unsigned char LICE_pixel_chan;
55class LICE_IBitmap;
56class LICE_IFont;
57#endif
58
59class WDL_VirtualWnd_BGCfg;
60class AudioAccessor;
61class joystick_device;
62
63// easiest to include reaper_plugin.h before reaper_plugin_functions.h in your application code.
64// if not, you may need to edit this path.
65#ifndef _REAPER_PLUGIN_H_
66#include "reaper_plugin.h"
67#endif
68
69#ifdef REAPERAPI_DEF
70#undef REAPERAPI_DEF
71#endif
72#ifdef REAPERAPI_IMPLEMENT
73 #define REAPERAPI_DEF
74#else
75 #define REAPERAPI_DEF extern
76#endif
77
78
79#if defined(REAPERAPI_WANT___mergesort) || !defined(REAPERAPI_MINIMAL)
80REAPERAPI_DEF //==============================================
81// __mergesort
82// __mergesort is a stable sorting function with an API similar to qsort().
83// HOWEVER, it requires some temporary space, equal to the size of the data being sorted, so you can pass it as the last parameter,
84// or NULL and it will allocate and free space internally.
85
86 void (*__mergesort)(void* base, size_t nmemb, size_t size, int (*cmpfunc)(const void*,const void*), void* tmpspace);
87#endif
88
89#if defined(REAPERAPI_WANT_AddCustomizableMenu) || !defined(REAPERAPI_MINIMAL)
90REAPERAPI_DEF //==============================================
91// AddCustomizableMenu
92// menuidstr is some unique identifying string
93// menuname is for main menus only (displayed in a menu bar somewhere), NULL otherwise
94// kbdsecname is the name of the KbdSectionInfo registered by this plugin, or NULL for the main actions section
95
96 bool (*AddCustomizableMenu)(const char* menuidstr, const char* menuname, const char* kbdsecname, bool addtomainmenu);
97#endif
98
99#if defined(REAPERAPI_WANT_AddExtensionsMainMenu) || !defined(REAPERAPI_MINIMAL)
100REAPERAPI_DEF //==============================================
101// AddExtensionsMainMenu
102// Add an Extensions main menu, which the extension can populate/modify with plugin_register("hookcustommenu")
103
104 bool (*AddExtensionsMainMenu)();
105#endif
106
107#if defined(REAPERAPI_WANT_AddMediaItemToTrack) || !defined(REAPERAPI_MINIMAL)
108REAPERAPI_DEF //==============================================
109// AddMediaItemToTrack
110// creates a new media item.
111
112 MediaItem* (*AddMediaItemToTrack)(MediaTrack* tr);
113#endif
114
115#if defined(REAPERAPI_WANT_AddProjectMarker) || !defined(REAPERAPI_MINIMAL)
116REAPERAPI_DEF //==============================================
117// AddProjectMarker
118// 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.
119
120 int (*AddProjectMarker)(ReaProject* proj, bool isrgn, double pos, double rgnend, const char* name, int wantidx);
121#endif
122
123#if defined(REAPERAPI_WANT_AddProjectMarker2) || !defined(REAPERAPI_MINIMAL)
124REAPERAPI_DEF //==============================================
125// AddProjectMarker2
126// 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
127
128 int (*AddProjectMarker2)(ReaProject* proj, bool isrgn, double pos, double rgnend, const char* name, int wantidx, int color);
129#endif
130
131#if defined(REAPERAPI_WANT_AddRemoveReaScript) || !defined(REAPERAPI_MINIMAL)
132REAPERAPI_DEF //==============================================
133// AddRemoveReaScript
134// Add a ReaScript (return the new command ID, or 0 if failed) or remove a ReaScript (return >0 on success). Use commit==true when adding/removing a single script. When bulk adding/removing n scripts, you can optimize the n-1 first calls with commit==false and commit==true for the last call.
135
136 int (*AddRemoveReaScript)(bool add, int sectionID, const char* scriptfn, bool commit);
137#endif
138
139#if defined(REAPERAPI_WANT_AddTakeToMediaItem) || !defined(REAPERAPI_MINIMAL)
140REAPERAPI_DEF //==============================================
141// AddTakeToMediaItem
142// creates a new take in an item
143
144 MediaItem_Take* (*AddTakeToMediaItem)(MediaItem* item);
145#endif
146
147#if defined(REAPERAPI_WANT_AddTempoTimeSigMarker) || !defined(REAPERAPI_MINIMAL)
148REAPERAPI_DEF //==============================================
149// AddTempoTimeSigMarker
150// Deprecated. Use SetTempoTimeSigMarker with ptidx=-1.
151
152 bool (*AddTempoTimeSigMarker)(ReaProject* proj, double timepos, double bpm, int timesig_num, int timesig_denom, bool lineartempochange);
153#endif
154
155#if defined(REAPERAPI_WANT_adjustZoom) || !defined(REAPERAPI_MINIMAL)
156REAPERAPI_DEF //==============================================
157// adjustZoom
158// forceset=0,doupd=true,centermode=-1 for default
159
160 void (*adjustZoom)(double amt, int forceset, bool doupd, int centermode);
161#endif
162
163#if defined(REAPERAPI_WANT_AnyTrackSolo) || !defined(REAPERAPI_MINIMAL)
164REAPERAPI_DEF //==============================================
165// AnyTrackSolo
166
167 bool (*AnyTrackSolo)(ReaProject* proj);
168#endif
169
170#if defined(REAPERAPI_WANT_APIExists) || !defined(REAPERAPI_MINIMAL)
171REAPERAPI_DEF //==============================================
172// APIExists
173// Returns true if function_name exists in the REAPER API
174
175 bool (*APIExists)(const char* function_name);
176#endif
177
178#if defined(REAPERAPI_WANT_APITest) || !defined(REAPERAPI_MINIMAL)
179REAPERAPI_DEF //==============================================
180// APITest
181// Displays a message window if the API was successfully called.
182
183 void (*APITest)();
184#endif
185
186#if defined(REAPERAPI_WANT_ApplyNudge) || !defined(REAPERAPI_MINIMAL)
187REAPERAPI_DEF //==============================================
188// ApplyNudge
189// nudgeflag: &1=set to value (otherwise nudge by value), &2=snap
190// nudgewhat: 0=position, 1=left trim, 2=left edge, 3=right edge, 4=contents, 5=duplicate, 6=edit cursor
191// 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
192// value: amount to nudge by, or value to set to
193// reverse: in nudge mode, nudges left (otherwise ignored)
194// copies: in nudge duplicate mode, number of copies (otherwise ignored)
195
196 bool (*ApplyNudge)(ReaProject* project, int nudgeflag, int nudgewhat, int nudgeunits, double value, bool reverse, int copies);
197#endif
198
199#if defined(REAPERAPI_WANT_Audio_Init) || !defined(REAPERAPI_MINIMAL)
200REAPERAPI_DEF //==============================================
201// Audio_Init
202// open all audio and MIDI devices, if not open
203
204 void (*Audio_Init)();
205#endif
206
207#if defined(REAPERAPI_WANT_Audio_IsPreBuffer) || !defined(REAPERAPI_MINIMAL)
208REAPERAPI_DEF //==============================================
209// Audio_IsPreBuffer
210// is in pre-buffer? threadsafe
211
212 int (*Audio_IsPreBuffer)();
213#endif
214
215#if defined(REAPERAPI_WANT_Audio_IsRunning) || !defined(REAPERAPI_MINIMAL)
216REAPERAPI_DEF //==============================================
217// Audio_IsRunning
218// is audio running at all? threadsafe
219
220 int (*Audio_IsRunning)();
221#endif
222
223#if defined(REAPERAPI_WANT_Audio_Quit) || !defined(REAPERAPI_MINIMAL)
224REAPERAPI_DEF //==============================================
225// Audio_Quit
226// close all audio and MIDI devices, if open
227
228 void (*Audio_Quit)();
229#endif
230
231#if defined(REAPERAPI_WANT_Audio_RegHardwareHook) || !defined(REAPERAPI_MINIMAL)
232REAPERAPI_DEF //==============================================
233// Audio_RegHardwareHook
234// return >0 on success
235
236 int (*Audio_RegHardwareHook)(bool isAdd, audio_hook_register_t* reg);
237#endif
238
239#if defined(REAPERAPI_WANT_AudioAccessorValidateState) || !defined(REAPERAPI_MINIMAL)
240REAPERAPI_DEF //==============================================
241// AudioAccessorValidateState
242// Validates the current state of the audio accessor -- must ONLY call this from the main thread. Returns true if the state changed.
243
244 bool (*AudioAccessorValidateState)(AudioAccessor* accessor);
245#endif
246
247#if defined(REAPERAPI_WANT_BypassFxAllTracks) || !defined(REAPERAPI_MINIMAL)
248REAPERAPI_DEF //==============================================
249// BypassFxAllTracks
250// -1 = bypass all if not all bypassed,otherwise unbypass all
251
252 void (*BypassFxAllTracks)(int bypass);
253#endif
254
255#if defined(REAPERAPI_WANT_CalculatePeaks) || !defined(REAPERAPI_MINIMAL)
256REAPERAPI_DEF //==============================================
257// CalculatePeaks
258
259 int (*CalculatePeaks)(PCM_source_transfer_t* srcBlock, PCM_source_peaktransfer_t* pksBlock);
260#endif
261
262#if defined(REAPERAPI_WANT_CalculatePeaksFloatSrcPtr) || !defined(REAPERAPI_MINIMAL)
263REAPERAPI_DEF //==============================================
264// CalculatePeaksFloatSrcPtr
265// NOTE: source samples field is a pointer to floats instead
266
267 int (*CalculatePeaksFloatSrcPtr)(PCM_source_transfer_t* srcBlock, PCM_source_peaktransfer_t* pksBlock);
268#endif
269
270#if defined(REAPERAPI_WANT_ClearAllRecArmed) || !defined(REAPERAPI_MINIMAL)
271REAPERAPI_DEF //==============================================
272// ClearAllRecArmed
273
274 void (*ClearAllRecArmed)();
275#endif
276
277#if defined(REAPERAPI_WANT_ClearConsole) || !defined(REAPERAPI_MINIMAL)
278REAPERAPI_DEF //==============================================
279// ClearConsole
280// Clear the ReaScript console. See ShowConsoleMsg
281
282 void (*ClearConsole)();
283#endif
284
285#if defined(REAPERAPI_WANT_ClearPeakCache) || !defined(REAPERAPI_MINIMAL)
286REAPERAPI_DEF //==============================================
287// ClearPeakCache
288// resets the global peak caches
289
290 void (*ClearPeakCache)();
291#endif
292
293#if defined(REAPERAPI_WANT_ColorFromNative) || !defined(REAPERAPI_MINIMAL)
294REAPERAPI_DEF //==============================================
295// ColorFromNative
296// Extract RGB values from an OS dependent color. See ColorToNative.
297
298 void (*ColorFromNative)(int col, int* rOut, int* gOut, int* bOut);
299#endif
300
301#if defined(REAPERAPI_WANT_ColorToNative) || !defined(REAPERAPI_MINIMAL)
302REAPERAPI_DEF //==============================================
303// ColorToNative
304// Make an OS dependent color from RGB values (e.g. RGB() macro on Windows). r,g and b are in [0..255]. See ColorFromNative.
305
306 int (*ColorToNative)(int r, int g, int b);
307#endif
308
309#if defined(REAPERAPI_WANT_CountActionShortcuts) || !defined(REAPERAPI_MINIMAL)
310REAPERAPI_DEF //==============================================
311// CountActionShortcuts
312// Returns the number of shortcuts that exist for the given command ID.
313// see GetActionShortcutDesc, DeleteActionShortcut, DoActionShortcutDialog.
314
315 int (*CountActionShortcuts)(KbdSectionInfo* section, int cmdID);
316#endif
317
318#if defined(REAPERAPI_WANT_CountAutomationItems) || !defined(REAPERAPI_MINIMAL)
319REAPERAPI_DEF //==============================================
320// CountAutomationItems
321// Returns the number of automation items on this envelope. See GetSetAutomationItemInfo
322
323 int (*CountAutomationItems)(TrackEnvelope* env);
324#endif
325
326#if defined(REAPERAPI_WANT_CountEnvelopePoints) || !defined(REAPERAPI_MINIMAL)
327REAPERAPI_DEF //==============================================
328// CountEnvelopePoints
329// Returns the number of points in the envelope.
330
331 int (*CountEnvelopePoints)(TrackEnvelope* envelope);
332#endif
333
334#if defined(REAPERAPI_WANT_CountEnvelopePointsEx) || !defined(REAPERAPI_MINIMAL)
335REAPERAPI_DEF //==============================================
336// CountEnvelopePointsEx
337// Returns the number of points in the envelope. autoitem_idx==-1 for the underlying envelope, 0 for the first automation item on the envelope, etc.
338
339 int (*CountEnvelopePointsEx)(TrackEnvelope* envelope, int autoitem_idx);
340#endif
341
342#if defined(REAPERAPI_WANT_CountMediaItems) || !defined(REAPERAPI_MINIMAL)
343REAPERAPI_DEF //==============================================
344// CountMediaItems
345// count the number of items in the project (proj=0 for active project)
346
347 int (*CountMediaItems)(ReaProject* proj);
348#endif
349
350#if defined(REAPERAPI_WANT_CountProjectMarkers) || !defined(REAPERAPI_MINIMAL)
351REAPERAPI_DEF //==============================================
352// CountProjectMarkers
353// num_markersOut and num_regionsOut may be NULL.
354
355 int (*CountProjectMarkers)(ReaProject* proj, int* num_markersOut, int* num_regionsOut);
356#endif
357
358#if defined(REAPERAPI_WANT_CountSelectedMediaItems) || !defined(REAPERAPI_MINIMAL)
359REAPERAPI_DEF //==============================================
360// CountSelectedMediaItems
361// count the number of selected items in the project (proj=0 for active project)
362
363 int (*CountSelectedMediaItems)(ReaProject* proj);
364#endif
365
366#if defined(REAPERAPI_WANT_CountSelectedTracks) || !defined(REAPERAPI_MINIMAL)
367REAPERAPI_DEF //==============================================
368// CountSelectedTracks
369// Count the number of selected tracks in the project (proj=0 for active project). This function ignores the master track, see CountSelectedTracks2.
370
371 int (*CountSelectedTracks)(ReaProject* proj);
372#endif
373
374#if defined(REAPERAPI_WANT_CountSelectedTracks2) || !defined(REAPERAPI_MINIMAL)
375REAPERAPI_DEF //==============================================
376// CountSelectedTracks2
377// Count the number of selected tracks in the project (proj=0 for active project).
378
379 int (*CountSelectedTracks2)(ReaProject* proj, bool wantmaster);
380#endif
381
382#if defined(REAPERAPI_WANT_CountTakeEnvelopes) || !defined(REAPERAPI_MINIMAL)
383REAPERAPI_DEF //==============================================
384// CountTakeEnvelopes
385// See GetTakeEnvelope
386
387 int (*CountTakeEnvelopes)(MediaItem_Take* take);
388#endif
389
390#if defined(REAPERAPI_WANT_CountTakes) || !defined(REAPERAPI_MINIMAL)
391REAPERAPI_DEF //==============================================
392// CountTakes
393// count the number of takes in the item
394
395 int (*CountTakes)(MediaItem* item);
396#endif
397
398#if defined(REAPERAPI_WANT_CountTCPFXParms) || !defined(REAPERAPI_MINIMAL)
399REAPERAPI_DEF //==============================================
400// CountTCPFXParms
401// Count the number of FX parameter knobs displayed on the track control panel.
402
403 int (*CountTCPFXParms)(ReaProject* project, MediaTrack* track);
404#endif
405
406#if defined(REAPERAPI_WANT_CountTempoTimeSigMarkers) || !defined(REAPERAPI_MINIMAL)
407REAPERAPI_DEF //==============================================
408// CountTempoTimeSigMarkers
409// Count the number of tempo/time signature markers in the project. See GetTempoTimeSigMarker, SetTempoTimeSigMarker, AddTempoTimeSigMarker.
410
411 int (*CountTempoTimeSigMarkers)(ReaProject* proj);
412#endif
413
414#if defined(REAPERAPI_WANT_CountTrackEnvelopes) || !defined(REAPERAPI_MINIMAL)
415REAPERAPI_DEF //==============================================
416// CountTrackEnvelopes
417// see GetTrackEnvelope
418
419 int (*CountTrackEnvelopes)(MediaTrack* track);
420#endif
421
422#if defined(REAPERAPI_WANT_CountTrackMediaItems) || !defined(REAPERAPI_MINIMAL)
423REAPERAPI_DEF //==============================================
424// CountTrackMediaItems
425// count the number of items in the track
426
427 int (*CountTrackMediaItems)(MediaTrack* track);
428#endif
429
430#if defined(REAPERAPI_WANT_CountTracks) || !defined(REAPERAPI_MINIMAL)
431REAPERAPI_DEF //==============================================
432// CountTracks
433// count the number of tracks in the project (proj=0 for active project)
434
435 int (*CountTracks)(ReaProject* proj);
436#endif
437
438#if defined(REAPERAPI_WANT_CreateLocalOscHandler) || !defined(REAPERAPI_MINIMAL)
439REAPERAPI_DEF //==============================================
440// CreateLocalOscHandler
441// 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.
442
443 void* (*CreateLocalOscHandler)(void* obj, void* callback);
444#endif
445
446#if defined(REAPERAPI_WANT_CreateMIDIInput) || !defined(REAPERAPI_MINIMAL)
447REAPERAPI_DEF //==============================================
448// CreateMIDIInput
449// Can only reliably create midi access for devices not already opened in prefs/MIDI, suitable for control surfaces etc.
450
451 midi_Input* (*CreateMIDIInput)(int dev);
452#endif
453
454#if defined(REAPERAPI_WANT_CreateMIDIOutput) || !defined(REAPERAPI_MINIMAL)
455REAPERAPI_DEF //==============================================
456// CreateMIDIOutput
457// Can only reliably create midi access for devices not already opened in prefs/MIDI, suitable for control surfaces etc. If streamMode is set, msoffset100 points to a persistent variable that can change and reflects added delay to output in 100ths of a millisecond.
458
459 midi_Output* (*CreateMIDIOutput)(int dev, bool streamMode, int* msoffset100);
460#endif
461
462#if defined(REAPERAPI_WANT_CreateNewMIDIItemInProj) || !defined(REAPERAPI_MINIMAL)
463REAPERAPI_DEF //==============================================
464// CreateNewMIDIItemInProj
465// Create a new MIDI media item, containing no MIDI events. Time is in seconds unless qn is set.
466
467 MediaItem* (*CreateNewMIDIItemInProj)(MediaTrack* track, double starttime, double endtime, const bool* qnInOptional);
468#endif
469
470#if defined(REAPERAPI_WANT_CreateTakeAudioAccessor) || !defined(REAPERAPI_MINIMAL)
471REAPERAPI_DEF //==============================================
472// CreateTakeAudioAccessor
473// Create an audio accessor object for this take. Must only call from the main thread. See CreateTrackAudioAccessor, DestroyAudioAccessor, GetAudioAccessorHash, GetAudioAccessorStartTime, GetAudioAccessorEndTime, GetAudioAccessorSamples.
474
475 AudioAccessor* (*CreateTakeAudioAccessor)(MediaItem_Take* take);
476#endif
477
478#if defined(REAPERAPI_WANT_CreateTrackAudioAccessor) || !defined(REAPERAPI_MINIMAL)
479REAPERAPI_DEF //==============================================
480// CreateTrackAudioAccessor
481// Create an audio accessor object for this track. Must only call from the main thread. See CreateTakeAudioAccessor, DestroyAudioAccessor, GetAudioAccessorHash, GetAudioAccessorStartTime, GetAudioAccessorEndTime, GetAudioAccessorSamples.
482
483 AudioAccessor* (*CreateTrackAudioAccessor)(MediaTrack* track);
484#endif
485
486#if defined(REAPERAPI_WANT_CreateTrackSend) || !defined(REAPERAPI_MINIMAL)
487REAPERAPI_DEF //==============================================
488// CreateTrackSend
489// Create a send/receive (desttrInOptional!=NULL), or a hardware output (desttrInOptional==NULL) with default properties, return >=0 on success (== new send/receive index). See RemoveTrackSend, GetSetTrackSendInfo, GetTrackSendInfo_Value, SetTrackSendInfo_Value.
490
491 int (*CreateTrackSend)(MediaTrack* tr, MediaTrack* desttrInOptional);
492#endif
493
494#if defined(REAPERAPI_WANT_CSurf_FlushUndo) || !defined(REAPERAPI_MINIMAL)
495REAPERAPI_DEF //==============================================
496// CSurf_FlushUndo
497// call this to force flushing of the undo states after using CSurf_On*Change()
498
499 void (*CSurf_FlushUndo)(bool force);
500#endif
501
502#if defined(REAPERAPI_WANT_CSurf_GetTouchState) || !defined(REAPERAPI_MINIMAL)
503REAPERAPI_DEF //==============================================
504// CSurf_GetTouchState
505
506 bool (*CSurf_GetTouchState)(MediaTrack* trackid, int isPan);
507#endif
508
509#if defined(REAPERAPI_WANT_CSurf_GoEnd) || !defined(REAPERAPI_MINIMAL)
510REAPERAPI_DEF //==============================================
511// CSurf_GoEnd
512
513 void (*CSurf_GoEnd)();
514#endif
515
516#if defined(REAPERAPI_WANT_CSurf_GoStart) || !defined(REAPERAPI_MINIMAL)
517REAPERAPI_DEF //==============================================
518// CSurf_GoStart
519
520 void (*CSurf_GoStart)();
521#endif
522
523#if defined(REAPERAPI_WANT_CSurf_NumTracks) || !defined(REAPERAPI_MINIMAL)
524REAPERAPI_DEF //==============================================
525// CSurf_NumTracks
526
527 int (*CSurf_NumTracks)(bool mcpView);
528#endif
529
530#if defined(REAPERAPI_WANT_CSurf_OnArrow) || !defined(REAPERAPI_MINIMAL)
531REAPERAPI_DEF //==============================================
532// CSurf_OnArrow
533
534 void (*CSurf_OnArrow)(int whichdir, bool wantzoom);
535#endif
536
537#if defined(REAPERAPI_WANT_CSurf_OnFwd) || !defined(REAPERAPI_MINIMAL)
538REAPERAPI_DEF //==============================================
539// CSurf_OnFwd
540
541 void (*CSurf_OnFwd)(int seekplay);
542#endif
543
544#if defined(REAPERAPI_WANT_CSurf_OnFXChange) || !defined(REAPERAPI_MINIMAL)
545REAPERAPI_DEF //==============================================
546// CSurf_OnFXChange
547
548 bool (*CSurf_OnFXChange)(MediaTrack* trackid, int en);
549#endif
550
551#if defined(REAPERAPI_WANT_CSurf_OnInputMonitorChange) || !defined(REAPERAPI_MINIMAL)
552REAPERAPI_DEF //==============================================
553// CSurf_OnInputMonitorChange
554
555 int (*CSurf_OnInputMonitorChange)(MediaTrack* trackid, int monitor);
556#endif
557
558#if defined(REAPERAPI_WANT_CSurf_OnInputMonitorChangeEx) || !defined(REAPERAPI_MINIMAL)
559REAPERAPI_DEF //==============================================
560// CSurf_OnInputMonitorChangeEx
561
562 int (*CSurf_OnInputMonitorChangeEx)(MediaTrack* trackid, int monitor, bool allowgang);
563#endif
564
565#if defined(REAPERAPI_WANT_CSurf_OnMuteChange) || !defined(REAPERAPI_MINIMAL)
566REAPERAPI_DEF //==============================================
567// CSurf_OnMuteChange
568
569 bool (*CSurf_OnMuteChange)(MediaTrack* trackid, int mute);
570#endif
571
572#if defined(REAPERAPI_WANT_CSurf_OnMuteChangeEx) || !defined(REAPERAPI_MINIMAL)
573REAPERAPI_DEF //==============================================
574// CSurf_OnMuteChangeEx
575
576 bool (*CSurf_OnMuteChangeEx)(MediaTrack* trackid, int mute, bool allowgang);
577#endif
578
579#if defined(REAPERAPI_WANT_CSurf_OnOscControlMessage) || !defined(REAPERAPI_MINIMAL)
580REAPERAPI_DEF //==============================================
581// CSurf_OnOscControlMessage
582
583 void (*CSurf_OnOscControlMessage)(const char* msg, const float* arg);
584#endif
585
586#if defined(REAPERAPI_WANT_CSurf_OnPanChange) || !defined(REAPERAPI_MINIMAL)
587REAPERAPI_DEF //==============================================
588// CSurf_OnPanChange
589
590 double (*CSurf_OnPanChange)(MediaTrack* trackid, double pan, bool relative);
591#endif
592
593#if defined(REAPERAPI_WANT_CSurf_OnPanChangeEx) || !defined(REAPERAPI_MINIMAL)
594REAPERAPI_DEF //==============================================
595// CSurf_OnPanChangeEx
596
597 double (*CSurf_OnPanChangeEx)(MediaTrack* trackid, double pan, bool relative, bool allowGang);
598#endif
599
600#if defined(REAPERAPI_WANT_CSurf_OnPause) || !defined(REAPERAPI_MINIMAL)
601REAPERAPI_DEF //==============================================
602// CSurf_OnPause
603
604 void (*CSurf_OnPause)();
605#endif
606
607#if defined(REAPERAPI_WANT_CSurf_OnPlay) || !defined(REAPERAPI_MINIMAL)
608REAPERAPI_DEF //==============================================
609// CSurf_OnPlay
610
611 void (*CSurf_OnPlay)();
612#endif
613
614#if defined(REAPERAPI_WANT_CSurf_OnPlayRateChange) || !defined(REAPERAPI_MINIMAL)
615REAPERAPI_DEF //==============================================
616// CSurf_OnPlayRateChange
617
618 void (*CSurf_OnPlayRateChange)(double playrate);
619#endif
620
621#if defined(REAPERAPI_WANT_CSurf_OnRecArmChange) || !defined(REAPERAPI_MINIMAL)
622REAPERAPI_DEF //==============================================
623// CSurf_OnRecArmChange
624
625 bool (*CSurf_OnRecArmChange)(MediaTrack* trackid, int recarm);
626#endif
627
628#if defined(REAPERAPI_WANT_CSurf_OnRecArmChangeEx) || !defined(REAPERAPI_MINIMAL)
629REAPERAPI_DEF //==============================================
630// CSurf_OnRecArmChangeEx
631
632 bool (*CSurf_OnRecArmChangeEx)(MediaTrack* trackid, int recarm, bool allowgang);
633#endif
634
635#if defined(REAPERAPI_WANT_CSurf_OnRecord) || !defined(REAPERAPI_MINIMAL)
636REAPERAPI_DEF //==============================================
637// CSurf_OnRecord
638
639 void (*CSurf_OnRecord)();
640#endif
641
642#if defined(REAPERAPI_WANT_CSurf_OnRecvPanChange) || !defined(REAPERAPI_MINIMAL)
643REAPERAPI_DEF //==============================================
644// CSurf_OnRecvPanChange
645
646 double (*CSurf_OnRecvPanChange)(MediaTrack* trackid, int recv_index, double pan, bool relative);
647#endif
648
649#if defined(REAPERAPI_WANT_CSurf_OnRecvVolumeChange) || !defined(REAPERAPI_MINIMAL)
650REAPERAPI_DEF //==============================================
651// CSurf_OnRecvVolumeChange
652
653 double (*CSurf_OnRecvVolumeChange)(MediaTrack* trackid, int recv_index, double volume, bool relative);
654#endif
655
656#if defined(REAPERAPI_WANT_CSurf_OnRew) || !defined(REAPERAPI_MINIMAL)
657REAPERAPI_DEF //==============================================
658// CSurf_OnRew
659
660 void (*CSurf_OnRew)(int seekplay);
661#endif
662
663#if defined(REAPERAPI_WANT_CSurf_OnRewFwd) || !defined(REAPERAPI_MINIMAL)
664REAPERAPI_DEF //==============================================
665// CSurf_OnRewFwd
666
667 void (*CSurf_OnRewFwd)(int seekplay, int dir);
668#endif
669
670#if defined(REAPERAPI_WANT_CSurf_OnScroll) || !defined(REAPERAPI_MINIMAL)
671REAPERAPI_DEF //==============================================
672// CSurf_OnScroll
673
674 void (*CSurf_OnScroll)(int xdir, int ydir);
675#endif
676
677#if defined(REAPERAPI_WANT_CSurf_OnSelectedChange) || !defined(REAPERAPI_MINIMAL)
678REAPERAPI_DEF //==============================================
679// CSurf_OnSelectedChange
680
681 bool (*CSurf_OnSelectedChange)(MediaTrack* trackid, int selected);
682#endif
683
684#if defined(REAPERAPI_WANT_CSurf_OnSendPanChange) || !defined(REAPERAPI_MINIMAL)
685REAPERAPI_DEF //==============================================
686// CSurf_OnSendPanChange
687
688 double (*CSurf_OnSendPanChange)(MediaTrack* trackid, int send_index, double pan, bool relative);
689#endif
690
691#if defined(REAPERAPI_WANT_CSurf_OnSendVolumeChange) || !defined(REAPERAPI_MINIMAL)
692REAPERAPI_DEF //==============================================
693// CSurf_OnSendVolumeChange
694
695 double (*CSurf_OnSendVolumeChange)(MediaTrack* trackid, int send_index, double volume, bool relative);
696#endif
697
698#if defined(REAPERAPI_WANT_CSurf_OnSoloChange) || !defined(REAPERAPI_MINIMAL)
699REAPERAPI_DEF //==============================================
700// CSurf_OnSoloChange
701
702 bool (*CSurf_OnSoloChange)(MediaTrack* trackid, int solo);
703#endif
704
705#if defined(REAPERAPI_WANT_CSurf_OnSoloChangeEx) || !defined(REAPERAPI_MINIMAL)
706REAPERAPI_DEF //==============================================
707// CSurf_OnSoloChangeEx
708
709 bool (*CSurf_OnSoloChangeEx)(MediaTrack* trackid, int solo, bool allowgang);
710#endif
711
712#if defined(REAPERAPI_WANT_CSurf_OnStop) || !defined(REAPERAPI_MINIMAL)
713REAPERAPI_DEF //==============================================
714// CSurf_OnStop
715
716 void (*CSurf_OnStop)();
717#endif
718
719#if defined(REAPERAPI_WANT_CSurf_OnTempoChange) || !defined(REAPERAPI_MINIMAL)
720REAPERAPI_DEF //==============================================
721// CSurf_OnTempoChange
722
723 void (*CSurf_OnTempoChange)(double bpm);
724#endif
725
726#if defined(REAPERAPI_WANT_CSurf_OnTrackSelection) || !defined(REAPERAPI_MINIMAL)
727REAPERAPI_DEF //==============================================
728// CSurf_OnTrackSelection
729
730 void (*CSurf_OnTrackSelection)(MediaTrack* trackid);
731#endif
732
733#if defined(REAPERAPI_WANT_CSurf_OnVolumeChange) || !defined(REAPERAPI_MINIMAL)
734REAPERAPI_DEF //==============================================
735// CSurf_OnVolumeChange
736
737 double (*CSurf_OnVolumeChange)(MediaTrack* trackid, double volume, bool relative);
738#endif
739
740#if defined(REAPERAPI_WANT_CSurf_OnVolumeChangeEx) || !defined(REAPERAPI_MINIMAL)
741REAPERAPI_DEF //==============================================
742// CSurf_OnVolumeChangeEx
743
744 double (*CSurf_OnVolumeChangeEx)(MediaTrack* trackid, double volume, bool relative, bool allowGang);
745#endif
746
747#if defined(REAPERAPI_WANT_CSurf_OnWidthChange) || !defined(REAPERAPI_MINIMAL)
748REAPERAPI_DEF //==============================================
749// CSurf_OnWidthChange
750
751 double (*CSurf_OnWidthChange)(MediaTrack* trackid, double width, bool relative);
752#endif
753
754#if defined(REAPERAPI_WANT_CSurf_OnWidthChangeEx) || !defined(REAPERAPI_MINIMAL)
755REAPERAPI_DEF //==============================================
756// CSurf_OnWidthChangeEx
757
758 double (*CSurf_OnWidthChangeEx)(MediaTrack* trackid, double width, bool relative, bool allowGang);
759#endif
760
761#if defined(REAPERAPI_WANT_CSurf_OnZoom) || !defined(REAPERAPI_MINIMAL)
762REAPERAPI_DEF //==============================================
763// CSurf_OnZoom
764
765 void (*CSurf_OnZoom)(int xdir, int ydir);
766#endif
767
768#if defined(REAPERAPI_WANT_CSurf_ResetAllCachedVolPanStates) || !defined(REAPERAPI_MINIMAL)
769REAPERAPI_DEF //==============================================
770// CSurf_ResetAllCachedVolPanStates
771
772 void (*CSurf_ResetAllCachedVolPanStates)();
773#endif
774
775#if defined(REAPERAPI_WANT_CSurf_ScrubAmt) || !defined(REAPERAPI_MINIMAL)
776REAPERAPI_DEF //==============================================
777// CSurf_ScrubAmt
778
779 void (*CSurf_ScrubAmt)(double amt);
780#endif
781
782#if defined(REAPERAPI_WANT_CSurf_SetAutoMode) || !defined(REAPERAPI_MINIMAL)
783REAPERAPI_DEF //==============================================
784// CSurf_SetAutoMode
785
786 void (*CSurf_SetAutoMode)(int mode, IReaperControlSurface* ignoresurf);
787#endif
788
789#if defined(REAPERAPI_WANT_CSurf_SetPlayState) || !defined(REAPERAPI_MINIMAL)
790REAPERAPI_DEF //==============================================
791// CSurf_SetPlayState
792
793 void (*CSurf_SetPlayState)(bool play, bool pause, bool rec, IReaperControlSurface* ignoresurf);
794#endif
795
796#if defined(REAPERAPI_WANT_CSurf_SetRepeatState) || !defined(REAPERAPI_MINIMAL)
797REAPERAPI_DEF //==============================================
798// CSurf_SetRepeatState
799
800 void (*CSurf_SetRepeatState)(bool rep, IReaperControlSurface* ignoresurf);
801#endif
802
803#if defined(REAPERAPI_WANT_CSurf_SetSurfaceMute) || !defined(REAPERAPI_MINIMAL)
804REAPERAPI_DEF //==============================================
805// CSurf_SetSurfaceMute
806
807 void (*CSurf_SetSurfaceMute)(MediaTrack* trackid, bool mute, IReaperControlSurface* ignoresurf);
808#endif
809
810#if defined(REAPERAPI_WANT_CSurf_SetSurfacePan) || !defined(REAPERAPI_MINIMAL)
811REAPERAPI_DEF //==============================================
812// CSurf_SetSurfacePan
813
814 void (*CSurf_SetSurfacePan)(MediaTrack* trackid, double pan, IReaperControlSurface* ignoresurf);
815#endif
816
817#if defined(REAPERAPI_WANT_CSurf_SetSurfaceRecArm) || !defined(REAPERAPI_MINIMAL)
818REAPERAPI_DEF //==============================================
819// CSurf_SetSurfaceRecArm
820
821 void (*CSurf_SetSurfaceRecArm)(MediaTrack* trackid, bool recarm, IReaperControlSurface* ignoresurf);
822#endif
823
824#if defined(REAPERAPI_WANT_CSurf_SetSurfaceSelected) || !defined(REAPERAPI_MINIMAL)
825REAPERAPI_DEF //==============================================
826// CSurf_SetSurfaceSelected
827
828 void (*CSurf_SetSurfaceSelected)(MediaTrack* trackid, bool selected, IReaperControlSurface* ignoresurf);
829#endif
830
831#if defined(REAPERAPI_WANT_CSurf_SetSurfaceSolo) || !defined(REAPERAPI_MINIMAL)
832REAPERAPI_DEF //==============================================
833// CSurf_SetSurfaceSolo
834
835 void (*CSurf_SetSurfaceSolo)(MediaTrack* trackid, bool solo, IReaperControlSurface* ignoresurf);
836#endif
837
838#if defined(REAPERAPI_WANT_CSurf_SetSurfaceVolume) || !defined(REAPERAPI_MINIMAL)
839REAPERAPI_DEF //==============================================
840// CSurf_SetSurfaceVolume
841
842 void (*CSurf_SetSurfaceVolume)(MediaTrack* trackid, double volume, IReaperControlSurface* ignoresurf);
843#endif
844
845#if defined(REAPERAPI_WANT_CSurf_SetTrackListChange) || !defined(REAPERAPI_MINIMAL)
846REAPERAPI_DEF //==============================================
847// CSurf_SetTrackListChange
848
849 void (*CSurf_SetTrackListChange)();
850#endif
851
852#if defined(REAPERAPI_WANT_CSurf_TrackFromID) || !defined(REAPERAPI_MINIMAL)
853REAPERAPI_DEF //==============================================
854// CSurf_TrackFromID
855
856 MediaTrack* (*CSurf_TrackFromID)(int idx, bool mcpView);
857#endif
858
859#if defined(REAPERAPI_WANT_CSurf_TrackToID) || !defined(REAPERAPI_MINIMAL)
860REAPERAPI_DEF //==============================================
861// CSurf_TrackToID
862
863 int (*CSurf_TrackToID)(MediaTrack* track, bool mcpView);
864#endif
865
866#if defined(REAPERAPI_WANT_DB2SLIDER) || !defined(REAPERAPI_MINIMAL)
867REAPERAPI_DEF //==============================================
868// DB2SLIDER
869
870 double (*DB2SLIDER)(double x);
871#endif
872
873#if defined(REAPERAPI_WANT_DeleteActionShortcut) || !defined(REAPERAPI_MINIMAL)
874REAPERAPI_DEF //==============================================
875// DeleteActionShortcut
876// Delete the specific shortcut for the given command ID.
877// See CountActionShortcuts, GetActionShortcutDesc, DoActionShortcutDialog.
878
879 bool (*DeleteActionShortcut)(KbdSectionInfo* section, int cmdID, int shortcutidx);
880#endif
881
882#if defined(REAPERAPI_WANT_DeleteEnvelopePointRange) || !defined(REAPERAPI_MINIMAL)
883REAPERAPI_DEF //==============================================
884// DeleteEnvelopePointRange
885// Delete a range of envelope points.
886
887 bool (*DeleteEnvelopePointRange)(TrackEnvelope* envelope, double time_start, double time_end);
888#endif
889
890#if defined(REAPERAPI_WANT_DeleteEnvelopePointRangeEx) || !defined(REAPERAPI_MINIMAL)
891REAPERAPI_DEF //==============================================
892// DeleteEnvelopePointRangeEx
893// Delete a range of envelope points. autoitem_idx==-1 for the underlying envelope, 0 for the first automation item on the envelope, etc.
894
895 bool (*DeleteEnvelopePointRangeEx)(TrackEnvelope* envelope, int autoitem_idx, double time_start, double time_end);
896#endif
897
898#if defined(REAPERAPI_WANT_DeleteExtState) || !defined(REAPERAPI_MINIMAL)
899REAPERAPI_DEF //==============================================
900// DeleteExtState
901// 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.
902
903 void (*DeleteExtState)(const char* section, const char* key, bool persist);
904#endif
905
906#if defined(REAPERAPI_WANT_DeleteProjectMarker) || !defined(REAPERAPI_MINIMAL)
907REAPERAPI_DEF //==============================================
908// DeleteProjectMarker
909// Delete a marker. proj==NULL for the active project.
910
911 bool (*DeleteProjectMarker)(ReaProject* proj, int markrgnindexnumber, bool isrgn);
912#endif
913
914#if defined(REAPERAPI_WANT_DeleteProjectMarkerByIndex) || !defined(REAPERAPI_MINIMAL)
915REAPERAPI_DEF //==============================================
916// DeleteProjectMarkerByIndex
917// 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).
918
919 bool (*DeleteProjectMarkerByIndex)(ReaProject* proj, int markrgnidx);
920#endif
921
922#if defined(REAPERAPI_WANT_DeleteTakeStretchMarkers) || !defined(REAPERAPI_MINIMAL)
923REAPERAPI_DEF //==============================================
924// DeleteTakeStretchMarkers
925// Deletes one or more stretch markers. Returns number of stretch markers deleted.
926
927 int (*DeleteTakeStretchMarkers)(MediaItem_Take* take, int idx, const int* countInOptional);
928#endif
929
930#if defined(REAPERAPI_WANT_DeleteTempoTimeSigMarker) || !defined(REAPERAPI_MINIMAL)
931REAPERAPI_DEF //==============================================
932// DeleteTempoTimeSigMarker
933// Delete a tempo/time signature marker.
934
935 bool (*DeleteTempoTimeSigMarker)(ReaProject* project, int markerindex);
936#endif
937
938#if defined(REAPERAPI_WANT_DeleteTrack) || !defined(REAPERAPI_MINIMAL)
939REAPERAPI_DEF //==============================================
940// DeleteTrack
941// deletes a track
942
943 void (*DeleteTrack)(MediaTrack* tr);
944#endif
945
946#if defined(REAPERAPI_WANT_DeleteTrackMediaItem) || !defined(REAPERAPI_MINIMAL)
947REAPERAPI_DEF //==============================================
948// DeleteTrackMediaItem
949
950 bool (*DeleteTrackMediaItem)(MediaTrack* tr, MediaItem* it);
951#endif
952
953#if defined(REAPERAPI_WANT_DestroyAudioAccessor) || !defined(REAPERAPI_MINIMAL)
954REAPERAPI_DEF //==============================================
955// DestroyAudioAccessor
956// Destroy an audio accessor. Must only call from the main thread. See CreateTakeAudioAccessor, CreateTrackAudioAccessor, GetAudioAccessorHash, GetAudioAccessorStartTime, GetAudioAccessorEndTime, GetAudioAccessorSamples.
957
958 void (*DestroyAudioAccessor)(AudioAccessor* accessor);
959#endif
960
961#if defined(REAPERAPI_WANT_DestroyLocalOscHandler) || !defined(REAPERAPI_MINIMAL)
962REAPERAPI_DEF //==============================================
963// DestroyLocalOscHandler
964// See CreateLocalOscHandler, SendLocalOscMessage.
965
966 void (*DestroyLocalOscHandler)(void* local_osc_handler);
967#endif
968
969#if defined(REAPERAPI_WANT_DoActionShortcutDialog) || !defined(REAPERAPI_MINIMAL)
970REAPERAPI_DEF //==============================================
971// DoActionShortcutDialog
972// 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.
973// See CountActionShortcuts, GetActionShortcutDesc, DeleteActionShortcut.
974
975 bool (*DoActionShortcutDialog)(HWND hwnd, KbdSectionInfo* section, int cmdID, int shortcutidx);
976#endif
977
978#if defined(REAPERAPI_WANT_Dock_UpdateDockID) || !defined(REAPERAPI_MINIMAL)
979REAPERAPI_DEF //==============================================
980// Dock_UpdateDockID
981// updates preference for docker window ident_str to be in dock whichDock on next open
982
983 void (*Dock_UpdateDockID)(const char* ident_str, int whichDock);
984#endif
985
986#if defined(REAPERAPI_WANT_DockIsChildOfDock) || !defined(REAPERAPI_MINIMAL)
987REAPERAPI_DEF //==============================================
988// DockIsChildOfDock
989// returns dock index that contains hwnd, or -1
990
991 int (*DockIsChildOfDock)(HWND hwnd, bool* isFloatingDockerOut);
992#endif
993
994#if defined(REAPERAPI_WANT_DockWindowActivate) || !defined(REAPERAPI_MINIMAL)
995REAPERAPI_DEF //==============================================
996// DockWindowActivate
997
998 void (*DockWindowActivate)(HWND hwnd);
999#endif
1000
1001#if defined(REAPERAPI_WANT_DockWindowAdd) || !defined(REAPERAPI_MINIMAL)
1002REAPERAPI_DEF //==============================================
1003// DockWindowAdd
1004
1005 void (*DockWindowAdd)(HWND hwnd, const char* name, int pos, bool allowShow);
1006#endif
1007
1008#if defined(REAPERAPI_WANT_DockWindowAddEx) || !defined(REAPERAPI_MINIMAL)
1009REAPERAPI_DEF //==============================================
1010// DockWindowAddEx
1011
1012 void (*DockWindowAddEx)(HWND hwnd, const char* name, const char* identstr, bool allowShow);
1013#endif
1014
1015#if defined(REAPERAPI_WANT_DockWindowRefresh) || !defined(REAPERAPI_MINIMAL)
1016REAPERAPI_DEF //==============================================
1017// DockWindowRefresh
1018
1019 void (*DockWindowRefresh)();
1020#endif
1021
1022#if defined(REAPERAPI_WANT_DockWindowRefreshForHWND) || !defined(REAPERAPI_MINIMAL)
1023REAPERAPI_DEF //==============================================
1024// DockWindowRefreshForHWND
1025
1026 void (*DockWindowRefreshForHWND)(HWND hwnd);
1027#endif
1028
1029#if defined(REAPERAPI_WANT_DockWindowRemove) || !defined(REAPERAPI_MINIMAL)
1030REAPERAPI_DEF //==============================================
1031// DockWindowRemove
1032
1033 void (*DockWindowRemove)(HWND hwnd);
1034#endif
1035
1036#if defined(REAPERAPI_WANT_DuplicateCustomizableMenu) || !defined(REAPERAPI_MINIMAL)
1037REAPERAPI_DEF //==============================================
1038// DuplicateCustomizableMenu
1039// Populate destmenu with all the entries and submenus found in srcmenu
1040
1041 bool (*DuplicateCustomizableMenu)(void* srcmenu, void* destmenu);
1042#endif
1043
1044#if defined(REAPERAPI_WANT_EditTempoTimeSigMarker) || !defined(REAPERAPI_MINIMAL)
1045REAPERAPI_DEF //==============================================
1046// EditTempoTimeSigMarker
1047// Open the tempo/time signature marker editor dialog.
1048
1049 bool (*EditTempoTimeSigMarker)(ReaProject* project, int markerindex);
1050#endif
1051
1052#if defined(REAPERAPI_WANT_EnsureNotCompletelyOffscreen) || !defined(REAPERAPI_MINIMAL)
1053REAPERAPI_DEF //==============================================
1054// EnsureNotCompletelyOffscreen
1055// call with a saved window rect for your window and it'll correct any positioning info.
1056
1057 void (*EnsureNotCompletelyOffscreen)(RECT* rOut);
1058#endif
1059
1060#if defined(REAPERAPI_WANT_EnumerateFiles) || !defined(REAPERAPI_MINIMAL)
1061REAPERAPI_DEF //==============================================
1062// EnumerateFiles
1063// List the files in the "path" directory. Returns NULL (or empty string, in Lua) when all files have been listed. See EnumerateSubdirectories
1064
1065 const char* (*EnumerateFiles)(const char* path, int fileindex);
1066#endif
1067
1068#if defined(REAPERAPI_WANT_EnumerateSubdirectories) || !defined(REAPERAPI_MINIMAL)
1069REAPERAPI_DEF //==============================================
1070// EnumerateSubdirectories
1071// List the subdirectories in the "path" directory. Returns NULL (or empty string, in Lua) when all subdirectories have been listed. See EnumerateFiles
1072
1073 const char* (*EnumerateSubdirectories)(const char* path, int subdirindex);
1074#endif
1075
1076#if defined(REAPERAPI_WANT_EnumPitchShiftModes) || !defined(REAPERAPI_MINIMAL)
1077REAPERAPI_DEF //==============================================
1078// EnumPitchShiftModes
1079// Start querying modes at 0, returns FALSE when no more modes possible, sets strOut to NULL if a mode is currently unsupported
1080
1081 bool (*EnumPitchShiftModes)(int mode, const char** strOut);
1082#endif
1083
1084#if defined(REAPERAPI_WANT_EnumPitchShiftSubModes) || !defined(REAPERAPI_MINIMAL)
1085REAPERAPI_DEF //==============================================
1086// EnumPitchShiftSubModes
1087// Returns submode name, or NULL
1088
1089 const char* (*EnumPitchShiftSubModes)(int mode, int submode);
1090#endif
1091
1092#if defined(REAPERAPI_WANT_EnumProjectMarkers) || !defined(REAPERAPI_MINIMAL)
1093REAPERAPI_DEF //==============================================
1094// EnumProjectMarkers
1095
1096 int (*EnumProjectMarkers)(int idx, bool* isrgnOut, double* posOut, double* rgnendOut, const char** nameOut, int* markrgnindexnumberOut);
1097#endif
1098
1099#if defined(REAPERAPI_WANT_EnumProjectMarkers2) || !defined(REAPERAPI_MINIMAL)
1100REAPERAPI_DEF //==============================================
1101// EnumProjectMarkers2
1102
1103 int (*EnumProjectMarkers2)(ReaProject* proj, int idx, bool* isrgnOut, double* posOut, double* rgnendOut, const char** nameOut, int* markrgnindexnumberOut);
1104#endif
1105
1106#if defined(REAPERAPI_WANT_EnumProjectMarkers3) || !defined(REAPERAPI_MINIMAL)
1107REAPERAPI_DEF //==============================================
1108// EnumProjectMarkers3
1109
1110 int (*EnumProjectMarkers3)(ReaProject* proj, int idx, bool* isrgnOut, double* posOut, double* rgnendOut, const char** nameOut, int* markrgnindexnumberOut, int* colorOut);
1111#endif
1112
1113#if defined(REAPERAPI_WANT_EnumProjects) || !defined(REAPERAPI_MINIMAL)
1114REAPERAPI_DEF //==============================================
1115// EnumProjects
1116// idx=-1 for current project,projfn can be NULL if not interested in filename. use idx 0x40000000 for currently rendering project, if any.
1117
1118 ReaProject* (*EnumProjects)(int idx, char* projfn, int projfn_sz);
1119#endif
1120
1121#if defined(REAPERAPI_WANT_EnumProjExtState) || !defined(REAPERAPI_MINIMAL)
1122REAPERAPI_DEF //==============================================
1123// EnumProjExtState
1124// Enumerate the data stored with the project for a specific extname. Returns false when there is no more data. See SetProjExtState, GetProjExtState.
1125
1126 bool (*EnumProjExtState)(ReaProject* proj, const char* extname, int idx, char* keyOutOptional, int keyOutOptional_sz, char* valOutOptional, int valOutOptional_sz);
1127#endif
1128
1129#if defined(REAPERAPI_WANT_EnumRegionRenderMatrix) || !defined(REAPERAPI_MINIMAL)
1130REAPERAPI_DEF //==============================================
1131// EnumRegionRenderMatrix
1132// 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.
1133
1134 MediaTrack* (*EnumRegionRenderMatrix)(ReaProject* proj, int regionindex, int rendertrack);
1135#endif
1136
1137#if defined(REAPERAPI_WANT_EnumTrackMIDIProgramNames) || !defined(REAPERAPI_MINIMAL)
1138REAPERAPI_DEF //==============================================
1139// EnumTrackMIDIProgramNames
1140// returns false if there are no plugins on the track that support MIDI programs,or if all programs have been enumerated
1141
1142 bool (*EnumTrackMIDIProgramNames)(int track, int programNumber, char* programName, int programName_sz);
1143#endif
1144
1145#if defined(REAPERAPI_WANT_EnumTrackMIDIProgramNamesEx) || !defined(REAPERAPI_MINIMAL)
1146REAPERAPI_DEF //==============================================
1147// EnumTrackMIDIProgramNamesEx
1148// returns false if there are no plugins on the track that support MIDI programs,or if all programs have been enumerated
1149
1150 bool (*EnumTrackMIDIProgramNamesEx)(ReaProject* proj, MediaTrack* track, int programNumber, char* programName, int programName_sz);
1151#endif
1152
1153#if defined(REAPERAPI_WANT_Envelope_Evaluate) || !defined(REAPERAPI_MINIMAL)
1154REAPERAPI_DEF //==============================================
1155// Envelope_Evaluate
1156// 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.
1157
1158 int (*Envelope_Evaluate)(TrackEnvelope* envelope, double time, double samplerate, int samplesRequested, double* valueOutOptional, double* dVdSOutOptional, double* ddVdSOutOptional, double* dddVdSOutOptional);
1159#endif
1160
1161#if defined(REAPERAPI_WANT_Envelope_FormatValue) || !defined(REAPERAPI_MINIMAL)
1162REAPERAPI_DEF //==============================================
1163// Envelope_FormatValue
1164// Formats the value of an envelope to a user-readable form
1165
1166 void (*Envelope_FormatValue)(TrackEnvelope* env, double value, char* bufOut, int bufOut_sz);
1167#endif
1168
1169#if defined(REAPERAPI_WANT_Envelope_GetParentTake) || !defined(REAPERAPI_MINIMAL)
1170REAPERAPI_DEF //==============================================
1171// Envelope_GetParentTake
1172// If take envelope, gets the take from the envelope. If FX, indexOutOptional set to FX index, index2OutOptional set to parameter index, otherwise -1.
1173
1174 MediaItem_Take* (*Envelope_GetParentTake)(TrackEnvelope* env, int* indexOutOptional, int* index2OutOptional);
1175#endif
1176
1177#if defined(REAPERAPI_WANT_Envelope_GetParentTrack) || !defined(REAPERAPI_MINIMAL)
1178REAPERAPI_DEF //==============================================
1179// Envelope_GetParentTrack
1180// If track envelope, gets the track from the envelope. If FX, indexOutOptional set to FX index, index2OutOptional set to parameter index, otherwise -1.
1181
1182 MediaTrack* (*Envelope_GetParentTrack)(TrackEnvelope* env, int* indexOutOptional, int* index2OutOptional);
1183#endif
1184
1185#if defined(REAPERAPI_WANT_Envelope_SortPoints) || !defined(REAPERAPI_MINIMAL)
1186REAPERAPI_DEF //==============================================
1187// Envelope_SortPoints
1188// Sort envelope points by time. See SetEnvelopePoint, InsertEnvelopePoint.
1189
1190 bool (*Envelope_SortPoints)(TrackEnvelope* envelope);
1191#endif
1192
1193#if defined(REAPERAPI_WANT_Envelope_SortPointsEx) || !defined(REAPERAPI_MINIMAL)
1194REAPERAPI_DEF //==============================================
1195// Envelope_SortPointsEx
1196// Sort envelope points by time. autoitem_idx==-1 for the underlying envelope, 0 for the first automation item on the envelope, etc. See SetEnvelopePoint, InsertEnvelopePoint.
1197
1198 bool (*Envelope_SortPointsEx)(TrackEnvelope* envelope, int autoitem_idx);
1199#endif
1200
1201#if defined(REAPERAPI_WANT_ExecProcess) || !defined(REAPERAPI_MINIMAL)
1202REAPERAPI_DEF //==============================================
1203// ExecProcess
1204// Executes command line, returns NULL on total failure, otherwise the return value, a newline, and then the output of the command. If timeoutmsec is 0, command will be allowed to run indefinitely (recommended for large amounts of returned output). timeoutmsec is -1 for no wait/terminate, -2 for no wait and minimize
1205
1206 const char* (*ExecProcess)(const char* cmdline, int timeoutmsec);
1207#endif
1208
1209#if defined(REAPERAPI_WANT_file_exists) || !defined(REAPERAPI_MINIMAL)
1210REAPERAPI_DEF //==============================================
1211// file_exists
1212// returns true if path points to a valid, readable file
1213
1214 bool (*file_exists)(const char* path);
1215#endif
1216
1217#if defined(REAPERAPI_WANT_FindTempoTimeSigMarker) || !defined(REAPERAPI_MINIMAL)
1218REAPERAPI_DEF //==============================================
1219// FindTempoTimeSigMarker
1220// 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).
1221
1222 int (*FindTempoTimeSigMarker)(ReaProject* project, double time);
1223#endif
1224
1225#if defined(REAPERAPI_WANT_format_timestr) || !defined(REAPERAPI_MINIMAL)
1226REAPERAPI_DEF //==============================================
1227// format_timestr
1228// Format tpos (which is time in seconds) as hh:mm:ss.sss. See format_timestr_pos, format_timestr_len.
1229
1230 void (*format_timestr)(double tpos, char* buf, int buf_sz);
1231#endif
1232
1233#if defined(REAPERAPI_WANT_format_timestr_len) || !defined(REAPERAPI_MINIMAL)
1234REAPERAPI_DEF //==============================================
1235// format_timestr_len
1236// time formatting mode overrides: -1=proj default.
1237// 0=time
1238// 1=measures.beats + time
1239// 2=measures.beats
1240// 3=seconds
1241// 4=samples
1242// 5=h:m:s:f
1243// offset is start of where the length will be calculated from
1244
1245 void (*format_timestr_len)(double tpos, char* buf, int buf_sz, double offset, int modeoverride);
1246#endif
1247
1248#if defined(REAPERAPI_WANT_format_timestr_pos) || !defined(REAPERAPI_MINIMAL)
1249REAPERAPI_DEF //==============================================
1250// format_timestr_pos
1251// time formatting mode overrides: -1=proj default.
1252// 0=time
1253// 1=measures.beats + time
1254// 2=measures.beats
1255// 3=seconds
1256// 4=samples
1257// 5=h:m:s:f
1258
1259 void (*format_timestr_pos)(double tpos, char* buf, int buf_sz, int modeoverride);
1260#endif
1261
1262#if defined(REAPERAPI_WANT_FreeHeapPtr) || !defined(REAPERAPI_MINIMAL)
1263REAPERAPI_DEF //==============================================
1264// FreeHeapPtr
1265// free heap memory returned from a Reaper API function
1266
1267 void (*FreeHeapPtr)(void* ptr);
1268#endif
1269
1270#if defined(REAPERAPI_WANT_genGuid) || !defined(REAPERAPI_MINIMAL)
1271REAPERAPI_DEF //==============================================
1272// genGuid
1273
1274 void (*genGuid)(GUID* g);
1275#endif
1276
1277#if defined(REAPERAPI_WANT_get_config_var) || !defined(REAPERAPI_MINIMAL)
1278REAPERAPI_DEF //==============================================
1279// get_config_var
1280
1281 void* (*get_config_var)(const char* name, int* szOut);
1282#endif
1283
1284#if defined(REAPERAPI_WANT_get_ini_file) || !defined(REAPERAPI_MINIMAL)
1285REAPERAPI_DEF //==============================================
1286// get_ini_file
1287// Get reaper.ini full filename.
1288
1289 const char* (*get_ini_file)();
1290#endif
1291
1292#if defined(REAPERAPI_WANT_get_midi_config_var) || !defined(REAPERAPI_MINIMAL)
1293REAPERAPI_DEF //==============================================
1294// get_midi_config_var
1295// Deprecated.
1296
1297 void* (*get_midi_config_var)(const char* name, int* szOut);
1298#endif
1299
1300#if defined(REAPERAPI_WANT_GetActionShortcutDesc) || !defined(REAPERAPI_MINIMAL)
1301REAPERAPI_DEF //==============================================
1302// GetActionShortcutDesc
1303// Get the text description of a specific shortcut for the given command ID.
1304// See CountActionShortcuts,DeleteActionShortcut,DoActionShortcutDialog.
1305
1306 bool (*GetActionShortcutDesc)(KbdSectionInfo* section, int cmdID, int shortcutidx, char* desc, int desclen);
1307#endif
1308
1309#if defined(REAPERAPI_WANT_GetActiveTake) || !defined(REAPERAPI_MINIMAL)
1310REAPERAPI_DEF //==============================================
1311// GetActiveTake
1312// get the active take in this item
1313
1314 MediaItem_Take* (*GetActiveTake)(MediaItem* item);
1315#endif
1316
1317#if defined(REAPERAPI_WANT_GetAllProjectPlayStates) || !defined(REAPERAPI_MINIMAL)
1318REAPERAPI_DEF //==============================================
1319// GetAllProjectPlayStates
1320// returns the bitwise OR of all project play states (1=playing, 2=pause, 4=recording)
1321
1322 int (*GetAllProjectPlayStates)(ReaProject* ignoreProject);
1323#endif
1324
1325#if defined(REAPERAPI_WANT_GetAppVersion) || !defined(REAPERAPI_MINIMAL)
1326REAPERAPI_DEF //==============================================
1327// GetAppVersion
1328
1329 const char* (*GetAppVersion)();
1330#endif
1331
1332#if defined(REAPERAPI_WANT_GetAudioAccessorEndTime) || !defined(REAPERAPI_MINIMAL)
1333REAPERAPI_DEF //==============================================
1334// GetAudioAccessorEndTime
1335// Get the end time of the audio that can be returned from this accessor. See CreateTakeAudioAccessor, CreateTrackAudioAccessor, DestroyAudioAccessor, GetAudioAccessorHash, GetAudioAccessorStartTime, GetAudioAccessorSamples.
1336
1337 double (*GetAudioAccessorEndTime)(AudioAccessor* accessor);
1338#endif
1339
1340#if defined(REAPERAPI_WANT_GetAudioAccessorHash) || !defined(REAPERAPI_MINIMAL)
1341REAPERAPI_DEF //==============================================
1342// GetAudioAccessorHash
1343// 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.
1344
1345 void (*GetAudioAccessorHash)(AudioAccessor* accessor, char* hashNeed128);
1346#endif
1347
1348#if defined(REAPERAPI_WANT_GetAudioAccessorSamples) || !defined(REAPERAPI_MINIMAL)
1349REAPERAPI_DEF //==============================================
1350// GetAudioAccessorSamples
1351// 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.//
1352//
1353// This function has special handling in Python, and only returns two objects, the API function return value, and the sample buffer. Example usage:
1354//
1355// <code>tr = RPR_GetTrack(0, 0)
1356// aa = RPR_CreateTrackAudioAccessor(tr)
1357// buf = list([0]*2*1024) # 2 channels, 1024 samples each, initialized to zero
1358// pos = 0.0
1359// (ret, buf) = GetAudioAccessorSamples(aa, 44100, 2, pos, 1024, buf)
1360// # buf now holds the first 2*1024 audio samples from the track.
1361// # typically GetAudioAccessorSamples() would be called within a loop, increasing pos each time.
1362// </code>
1363
1364 int (*GetAudioAccessorSamples)(AudioAccessor* accessor, int samplerate, int numchannels, double starttime_sec, int numsamplesperchannel, double* samplebuffer);
1365#endif
1366
1367#if defined(REAPERAPI_WANT_GetAudioAccessorStartTime) || !defined(REAPERAPI_MINIMAL)
1368REAPERAPI_DEF //==============================================
1369// GetAudioAccessorStartTime
1370// Get the start time of the audio that can be returned from this accessor. See CreateTakeAudioAccessor, CreateTrackAudioAccessor, DestroyAudioAccessor, GetAudioAccessorHash, GetAudioAccessorEndTime, GetAudioAccessorSamples.
1371
1372 double (*GetAudioAccessorStartTime)(AudioAccessor* accessor);
1373#endif
1374
1375#if defined(REAPERAPI_WANT_GetColorTheme) || !defined(REAPERAPI_MINIMAL)
1376REAPERAPI_DEF //==============================================
1377// GetColorTheme
1378// Deprecated, see GetColorThemeStruct.
1379
1380 INT_PTR (*GetColorTheme)(int idx, int defval);
1381#endif
1382
1383#if defined(REAPERAPI_WANT_GetColorThemeStruct) || !defined(REAPERAPI_MINIMAL)
1384REAPERAPI_DEF //==============================================
1385// GetColorThemeStruct
1386// returns the whole color theme (icontheme.h) and the size
1387
1388 void* (*GetColorThemeStruct)(int* szOut);
1389#endif
1390
1391#if defined(REAPERAPI_WANT_GetConfigWantsDock) || !defined(REAPERAPI_MINIMAL)
1392REAPERAPI_DEF //==============================================
1393// GetConfigWantsDock
1394// gets the dock ID desired by ident_str, if any
1395
1396 int (*GetConfigWantsDock)(const char* ident_str);
1397#endif
1398
1399#if defined(REAPERAPI_WANT_GetContextMenu) || !defined(REAPERAPI_MINIMAL)
1400REAPERAPI_DEF //==============================================
1401// GetContextMenu
1402// gets context menus. submenu 0:trackctl, 1:mediaitems, 2:ruler, 3:empty track area
1403
1404 HMENU (*GetContextMenu)(int idx);
1405#endif
1406
1407#if defined(REAPERAPI_WANT_GetCurrentProjectInLoadSave) || !defined(REAPERAPI_MINIMAL)
1408REAPERAPI_DEF //==============================================
1409// GetCurrentProjectInLoadSave
1410// returns current project if in load/save (usually only used from project_config_extension_t)
1411
1412 ReaProject* (*GetCurrentProjectInLoadSave)();
1413#endif
1414
1415#if defined(REAPERAPI_WANT_GetCursorContext) || !defined(REAPERAPI_MINIMAL)
1416REAPERAPI_DEF //==============================================
1417// GetCursorContext
1418// return the current cursor context: 0 if track panels, 1 if items, 2 if envelopes, otherwise unknown
1419
1420 int (*GetCursorContext)();
1421#endif
1422
1423#if defined(REAPERAPI_WANT_GetCursorContext2) || !defined(REAPERAPI_MINIMAL)
1424REAPERAPI_DEF //==============================================
1425// GetCursorContext2
1426// 0 if track panels, 1 if items, 2 if envelopes, otherwise unknown (unlikely when want_last_valid is true)
1427
1428 int (*GetCursorContext2)(bool want_last_valid);
1429#endif
1430
1431#if defined(REAPERAPI_WANT_GetCursorPosition) || !defined(REAPERAPI_MINIMAL)
1432REAPERAPI_DEF //==============================================
1433// GetCursorPosition
1434// edit cursor position
1435
1436 double (*GetCursorPosition)();
1437#endif
1438
1439#if defined(REAPERAPI_WANT_GetCursorPositionEx) || !defined(REAPERAPI_MINIMAL)
1440REAPERAPI_DEF //==============================================
1441// GetCursorPositionEx
1442// edit cursor position
1443
1444 double (*GetCursorPositionEx)(ReaProject* proj);
1445#endif
1446
1447#if defined(REAPERAPI_WANT_GetDisplayedMediaItemColor) || !defined(REAPERAPI_MINIMAL)
1448REAPERAPI_DEF //==============================================
1449// GetDisplayedMediaItemColor
1450// see GetDisplayedMediaItemColor2.
1451
1452 int (*GetDisplayedMediaItemColor)(MediaItem* item);
1453#endif
1454
1455#if defined(REAPERAPI_WANT_GetDisplayedMediaItemColor2) || !defined(REAPERAPI_MINIMAL)
1456REAPERAPI_DEF //==============================================
1457// GetDisplayedMediaItemColor2
1458// 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.
1459
1460 int (*GetDisplayedMediaItemColor2)(MediaItem* item, MediaItem_Take* take);
1461#endif
1462
1463#if defined(REAPERAPI_WANT_GetEnvelopeName) || !defined(REAPERAPI_MINIMAL)
1464REAPERAPI_DEF //==============================================
1465// GetEnvelopeName
1466
1467 bool (*GetEnvelopeName)(TrackEnvelope* env, char* buf, int buf_sz);
1468#endif
1469
1470#if defined(REAPERAPI_WANT_GetEnvelopePoint) || !defined(REAPERAPI_MINIMAL)
1471REAPERAPI_DEF //==============================================
1472// GetEnvelopePoint
1473// Get the attributes of an envelope point. See GetEnvelopePointByTime, SetEnvelopePoint.
1474
1475 bool (*GetEnvelopePoint)(TrackEnvelope* envelope, int ptidx, double* timeOutOptional, double* valueOutOptional, int* shapeOutOptional, double* tensionOutOptional, bool* selectedOutOptional);
1476#endif
1477
1478#if defined(REAPERAPI_WANT_GetEnvelopePointByTime) || !defined(REAPERAPI_MINIMAL)
1479REAPERAPI_DEF //==============================================
1480// GetEnvelopePointByTime
1481// Returns the envelope point at or immediately prior to the given time position. See GetEnvelopePoint, SetEnvelopePoint, Envelope_Evaluate.
1482
1483 int (*GetEnvelopePointByTime)(TrackEnvelope* envelope, double time);
1484#endif
1485
1486#if defined(REAPERAPI_WANT_GetEnvelopePointByTimeEx) || !defined(REAPERAPI_MINIMAL)
1487REAPERAPI_DEF //==============================================
1488// GetEnvelopePointByTimeEx
1489// Returns the envelope point at or immediately prior to the given time position. autoitem_idx==-1 for the underlying envelope, 0 for the first automation item on the envelope, etc. See GetEnvelopePoint, SetEnvelopePoint, Envelope_Evaluate.
1490
1491 int (*GetEnvelopePointByTimeEx)(TrackEnvelope* envelope, int autoitem_idx, double time);
1492#endif
1493
1494#if defined(REAPERAPI_WANT_GetEnvelopePointEx) || !defined(REAPERAPI_MINIMAL)
1495REAPERAPI_DEF //==============================================
1496// GetEnvelopePointEx
1497// Get the attributes of an envelope point. autoitem_idx==-1 for the underlying envelope, 0 for the first automation item on the envelope, etc. See GetEnvelopePointByTime, SetEnvelopePoint.
1498
1499 bool (*GetEnvelopePointEx)(TrackEnvelope* envelope, int autoitem_idx, int ptidx, double* timeOutOptional, double* valueOutOptional, int* shapeOutOptional, double* tensionOutOptional, bool* selectedOutOptional);
1500#endif
1501
1502#if defined(REAPERAPI_WANT_GetEnvelopeScalingMode) || !defined(REAPERAPI_MINIMAL)
1503REAPERAPI_DEF //==============================================
1504// GetEnvelopeScalingMode
1505// 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.
1506
1507 int (*GetEnvelopeScalingMode)(TrackEnvelope* env);
1508#endif
1509
1510#if defined(REAPERAPI_WANT_GetEnvelopeStateChunk) || !defined(REAPERAPI_MINIMAL)
1511REAPERAPI_DEF //==============================================
1512// GetEnvelopeStateChunk
1513// Gets the RPPXML state of an envelope, returns true if successful. Undo flag is a performance/caching hint.
1514
1515 bool (*GetEnvelopeStateChunk)(TrackEnvelope* env, char* strNeedBig, int strNeedBig_sz, bool isundoOptional);
1516#endif
1517
1518#if defined(REAPERAPI_WANT_GetExePath) || !defined(REAPERAPI_MINIMAL)
1519REAPERAPI_DEF //==============================================
1520// GetExePath
1521// returns path of REAPER.exe (not including EXE), i.e. C:\Program Files\REAPER
1522
1523 const char* (*GetExePath)();
1524#endif
1525
1526#if defined(REAPERAPI_WANT_GetExtState) || !defined(REAPERAPI_MINIMAL)
1527REAPERAPI_DEF //==============================================
1528// GetExtState
1529// Get the extended state value for a specific section and key. See SetExtState, DeleteExtState, HasExtState.
1530
1531 const char* (*GetExtState)(const char* section, const char* key);
1532#endif
1533
1534#if defined(REAPERAPI_WANT_GetFocusedFX) || !defined(REAPERAPI_MINIMAL)
1535REAPERAPI_DEF //==============================================
1536// GetFocusedFX
1537// 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. If item FX, fxnumber will have the high word be the take index, the low word the FX index. See GetLastTouchedFX.
1538
1539 int (*GetFocusedFX)(int* tracknumberOut, int* itemnumberOut, int* fxnumberOut);
1540#endif
1541
1542#if defined(REAPERAPI_WANT_GetFreeDiskSpaceForRecordPath) || !defined(REAPERAPI_MINIMAL)
1543REAPERAPI_DEF //==============================================
1544// GetFreeDiskSpaceForRecordPath
1545// returns free disk space in megabytes, pathIdx 0 for normal, 1 for alternate.
1546
1547 int (*GetFreeDiskSpaceForRecordPath)(ReaProject* proj, int pathidx);
1548#endif
1549
1550#if defined(REAPERAPI_WANT_GetFXEnvelope) || !defined(REAPERAPI_MINIMAL)
1551REAPERAPI_DEF //==============================================
1552// GetFXEnvelope
1553// Returns the FX parameter envelope. If the envelope does not exist and create=true, the envelope will be created.
1554
1555 TrackEnvelope* (*GetFXEnvelope)(MediaTrack* track, int fxindex, int parameterindex, bool create);
1556#endif
1557
1558#if defined(REAPERAPI_WANT_GetGlobalAutomationOverride) || !defined(REAPERAPI_MINIMAL)
1559REAPERAPI_DEF //==============================================
1560// GetGlobalAutomationOverride
1561// return -1=no override, 0=trim/read, 1=read, 2=touch, 3=write, 4=latch, 5=bypass
1562
1563 int (*GetGlobalAutomationOverride)();
1564#endif
1565
1566#if defined(REAPERAPI_WANT_GetHZoomLevel) || !defined(REAPERAPI_MINIMAL)
1567REAPERAPI_DEF //==============================================
1568// GetHZoomLevel
1569// returns pixels/second
1570
1571 double (*GetHZoomLevel)();
1572#endif
1573
1574#if defined(REAPERAPI_WANT_GetIconThemePointer) || !defined(REAPERAPI_MINIMAL)
1575REAPERAPI_DEF //==============================================
1576// GetIconThemePointer
1577// returns a named icontheme entry
1578
1579 void* (*GetIconThemePointer)(const char* name);
1580#endif
1581
1582#if defined(REAPERAPI_WANT_GetIconThemeStruct) || !defined(REAPERAPI_MINIMAL)
1583REAPERAPI_DEF //==============================================
1584// GetIconThemeStruct
1585// returns a pointer to the icon theme (icontheme.h) and the size of that struct
1586
1587 void* (*GetIconThemeStruct)(int* szOut);
1588#endif
1589
1590#if defined(REAPERAPI_WANT_GetInputChannelName) || !defined(REAPERAPI_MINIMAL)
1591REAPERAPI_DEF //==============================================
1592// GetInputChannelName
1593
1594 const char* (*GetInputChannelName)(int channelIndex);
1595#endif
1596
1597#if defined(REAPERAPI_WANT_GetInputOutputLatency) || !defined(REAPERAPI_MINIMAL)
1598REAPERAPI_DEF //==============================================
1599// GetInputOutputLatency
1600// Gets the audio device input/output latency in samples
1601
1602 void (*GetInputOutputLatency)(int* inputlatencyOut, int* outputLatencyOut);
1603#endif
1604
1605#if defined(REAPERAPI_WANT_GetItemEditingTime2) || !defined(REAPERAPI_MINIMAL)
1606REAPERAPI_DEF //==============================================
1607// GetItemEditingTime2
1608// 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
1609
1610 double (*GetItemEditingTime2)(PCM_source** which_itemOut, int* flagsOut);
1611#endif
1612
1613#if defined(REAPERAPI_WANT_GetItemProjectContext) || !defined(REAPERAPI_MINIMAL)
1614REAPERAPI_DEF //==============================================
1615// GetItemProjectContext
1616
1617 ReaProject* (*GetItemProjectContext)(MediaItem* item);
1618#endif
1619
1620#if defined(REAPERAPI_WANT_GetItemStateChunk) || !defined(REAPERAPI_MINIMAL)
1621REAPERAPI_DEF //==============================================
1622// GetItemStateChunk
1623// Gets the RPPXML state of an item, returns true if successful. Undo flag is a performance/caching hint.
1624
1625 bool (*GetItemStateChunk)(MediaItem* item, char* strNeedBig, int strNeedBig_sz, bool isundoOptional);
1626#endif
1627
1628#if defined(REAPERAPI_WANT_GetLastColorThemeFile) || !defined(REAPERAPI_MINIMAL)
1629REAPERAPI_DEF //==============================================
1630// GetLastColorThemeFile
1631
1632 const char* (*GetLastColorThemeFile)();
1633#endif
1634
1635#if defined(REAPERAPI_WANT_GetLastMarkerAndCurRegion) || !defined(REAPERAPI_MINIMAL)
1636REAPERAPI_DEF //==============================================
1637// GetLastMarkerAndCurRegion
1638// 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.
1639
1640 void (*GetLastMarkerAndCurRegion)(ReaProject* proj, double time, int* markeridxOut, int* regionidxOut);
1641#endif
1642
1643#if defined(REAPERAPI_WANT_GetLastTouchedFX) || !defined(REAPERAPI_MINIMAL)
1644REAPERAPI_DEF //==============================================
1645// GetLastTouchedFX
1646// 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.
1647
1648 bool (*GetLastTouchedFX)(int* tracknumberOut, int* fxnumberOut, int* paramnumberOut);
1649#endif
1650
1651#if defined(REAPERAPI_WANT_GetLastTouchedTrack) || !defined(REAPERAPI_MINIMAL)
1652REAPERAPI_DEF //==============================================
1653// GetLastTouchedTrack
1654
1655 MediaTrack* (*GetLastTouchedTrack)();
1656#endif
1657
1658#if defined(REAPERAPI_WANT_GetMainHwnd) || !defined(REAPERAPI_MINIMAL)
1659REAPERAPI_DEF //==============================================
1660// GetMainHwnd
1661
1662 HWND (*GetMainHwnd)();
1663#endif
1664
1665#if defined(REAPERAPI_WANT_GetMasterMuteSoloFlags) || !defined(REAPERAPI_MINIMAL)
1666REAPERAPI_DEF //==============================================
1667// GetMasterMuteSoloFlags
1668// &1=master mute,&2=master solo. This is deprecated as you can just query the master track as well.
1669
1670 int (*GetMasterMuteSoloFlags)();
1671#endif
1672
1673#if defined(REAPERAPI_WANT_GetMasterTrack) || !defined(REAPERAPI_MINIMAL)
1674REAPERAPI_DEF //==============================================
1675// GetMasterTrack
1676
1677 MediaTrack* (*GetMasterTrack)(ReaProject* proj);
1678#endif
1679
1680#if defined(REAPERAPI_WANT_GetMasterTrackVisibility) || !defined(REAPERAPI_MINIMAL)
1681REAPERAPI_DEF //==============================================
1682// GetMasterTrackVisibility
1683// returns &1 if the master track is visible in the TCP, &2 if visible in the mixer. See SetMasterTrackVisibility.
1684
1685 int (*GetMasterTrackVisibility)();
1686#endif
1687
1688#if defined(REAPERAPI_WANT_GetMaxMidiInputs) || !defined(REAPERAPI_MINIMAL)
1689REAPERAPI_DEF //==============================================
1690// GetMaxMidiInputs
1691// returns max dev for midi inputs/outputs
1692
1693 int (*GetMaxMidiInputs)();
1694#endif
1695
1696#if defined(REAPERAPI_WANT_GetMaxMidiOutputs) || !defined(REAPERAPI_MINIMAL)
1697REAPERAPI_DEF //==============================================
1698// GetMaxMidiOutputs
1699
1700 int (*GetMaxMidiOutputs)();
1701#endif
1702
1703#if defined(REAPERAPI_WANT_GetMediaItem) || !defined(REAPERAPI_MINIMAL)
1704REAPERAPI_DEF //==============================================
1705// GetMediaItem
1706// get an item from a project by item count (zero-based) (proj=0 for active project)
1707
1708 MediaItem* (*GetMediaItem)(ReaProject* proj, int itemidx);
1709#endif
1710
1711#if defined(REAPERAPI_WANT_GetMediaItem_Track) || !defined(REAPERAPI_MINIMAL)
1712REAPERAPI_DEF //==============================================
1713// GetMediaItem_Track
1714// Get parent track of media item
1715
1716 MediaTrack* (*GetMediaItem_Track)(MediaItem* item);
1717#endif
1718
1719#if defined(REAPERAPI_WANT_GetMediaItemInfo_Value) || !defined(REAPERAPI_MINIMAL)
1720REAPERAPI_DEF //==============================================
1721// GetMediaItemInfo_Value
1722// Get media item numerical-value attributes.
1723// B_MUTE : bool * to muted state
1724// B_LOOPSRC : bool * to loop source
1725// B_ALLTAKESPLAY : bool * to all takes play
1726// B_UISEL : bool * to ui selected
1727// C_BEATATTACHMODE : char * to one char of beat attached mode, -1=def, 0=time, 1=allbeats, 2=beatsosonly
1728// C_LOCK : char * to one char of lock flags (&1 is locked, currently)
1729// D_VOL : double * of item volume (volume bar)
1730// D_POSITION : double * of item position (seconds)
1731// D_LENGTH : double * of item length (seconds)
1732// D_SNAPOFFSET : double * of item snap offset (seconds)
1733// D_FADEINLEN : double * of item fade in length (manual, seconds)
1734// D_FADEOUTLEN : double * of item fade out length (manual, seconds)
1735// D_FADEINDIR : double * of item fade in curve [-1; 1]
1736// D_FADEOUTDIR : double * of item fade out curve [-1; 1]
1737// D_FADEINLEN_AUTO : double * of item autofade in length (seconds, -1 for no autofade set)
1738// D_FADEOUTLEN_AUTO : double * of item autofade out length (seconds, -1 for no autofade set)
1739// C_FADEINSHAPE : int * to fadein shape, 0=linear, ...
1740// C_FADEOUTSHAPE : int * to fadeout shape
1741// I_GROUPID : int * to group ID (0 = no group)
1742// I_LASTY : int * to last y position in track (readonly)
1743// I_LASTH : int * to last height in track (readonly)
1744// 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).
1745// I_CURTAKE : int * to active take
1746// IP_ITEMNUMBER : int, item number within the track (read-only, returns the item number directly)
1747// F_FREEMODE_Y : float * to free mode y position (0..1)
1748// F_FREEMODE_H : float * to free mode height (0..1)
1749
1750 double (*GetMediaItemInfo_Value)(MediaItem* item, const char* parmname);
1751#endif
1752
1753#if defined(REAPERAPI_WANT_GetMediaItemNumTakes) || !defined(REAPERAPI_MINIMAL)
1754REAPERAPI_DEF //==============================================
1755// GetMediaItemNumTakes
1756
1757 int (*GetMediaItemNumTakes)(MediaItem* item);
1758#endif
1759
1760#if defined(REAPERAPI_WANT_GetMediaItemTake) || !defined(REAPERAPI_MINIMAL)
1761REAPERAPI_DEF //==============================================
1762// GetMediaItemTake
1763
1764 MediaItem_Take* (*GetMediaItemTake)(MediaItem* item, int tk);
1765#endif
1766
1767#if defined(REAPERAPI_WANT_GetMediaItemTake_Item) || !defined(REAPERAPI_MINIMAL)
1768REAPERAPI_DEF //==============================================
1769// GetMediaItemTake_Item
1770// Get parent item of media item take
1771
1772 MediaItem* (*GetMediaItemTake_Item)(MediaItem_Take* take);
1773#endif
1774
1775#if defined(REAPERAPI_WANT_GetMediaItemTake_Peaks) || !defined(REAPERAPI_MINIMAL)
1776REAPERAPI_DEF //==============================================
1777// GetMediaItemTake_Peaks
1778// Gets block of peak samples to buf. Note that the peak samples are interleaved, but in two or three blocks (maximums, then minimums, then extra). Return value has 20 bits of returned sample count, then 4 bits of output_mode (0xf00000), then a bit to signify whether extra_type was available (0x1000000). extra_type can be 115 ('s') for spectral information, which will return peak samples as integers with the low 15 bits frequency, next 14 bits tonality.
1779
1780 int (*GetMediaItemTake_Peaks)(MediaItem_Take* take, double peakrate, double starttime, int numchannels, int numsamplesperchannel, int want_extra_type, double* buf);
1781#endif
1782
1783#if defined(REAPERAPI_WANT_GetMediaItemTake_Source) || !defined(REAPERAPI_MINIMAL)
1784REAPERAPI_DEF //==============================================
1785// GetMediaItemTake_Source
1786// Get media source of media item take
1787
1788 PCM_source* (*GetMediaItemTake_Source)(MediaItem_Take* take);
1789#endif
1790
1791#if defined(REAPERAPI_WANT_GetMediaItemTake_Track) || !defined(REAPERAPI_MINIMAL)
1792REAPERAPI_DEF //==============================================
1793// GetMediaItemTake_Track
1794// Get parent track of media item take
1795
1796 MediaTrack* (*GetMediaItemTake_Track)(MediaItem_Take* take);
1797#endif
1798
1799#if defined(REAPERAPI_WANT_GetMediaItemTakeByGUID) || !defined(REAPERAPI_MINIMAL)
1800REAPERAPI_DEF //==============================================
1801// GetMediaItemTakeByGUID
1802
1803 MediaItem_Take* (*GetMediaItemTakeByGUID)(ReaProject* project, const GUID* guid);
1804#endif
1805
1806#if defined(REAPERAPI_WANT_GetMediaItemTakeInfo_Value) || !defined(REAPERAPI_MINIMAL)
1807REAPERAPI_DEF //==============================================
1808// GetMediaItemTakeInfo_Value
1809// Get media item take numerical-value attributes.
1810// D_STARTOFFS : double *, start offset in take of item
1811// D_VOL : double *, take volume
1812// D_PAN : double *, take pan
1813// D_PANLAW : double *, take pan law (-1.0=default, 0.5=-6dB, 1.0=+0dB, etc)
1814// D_PLAYRATE : double *, take playrate (1.0=normal, 2.0=doublespeed, etc)
1815// D_PITCH : double *, take pitch adjust (in semitones, 0.0=normal, +12 = one octave up, etc)
1816// B_PPITCH, bool *, preserve pitch when changing rate
1817// I_CHANMODE, int *, channel mode (0=normal, 1=revstereo, 2=downmix, 3=l, 4=r)
1818// I_PITCHMODE, int *, pitch shifter mode, -1=proj default, otherwise high word=shifter low word = parameter
1819// 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).
1820// IP_TAKENUMBER : int, take number within the item (read-only, returns the take number directly)
1821
1822 double (*GetMediaItemTakeInfo_Value)(MediaItem_Take* take, const char* parmname);
1823#endif
1824
1825#if defined(REAPERAPI_WANT_GetMediaItemTrack) || !defined(REAPERAPI_MINIMAL)
1826REAPERAPI_DEF //==============================================
1827// GetMediaItemTrack
1828
1829 MediaTrack* (*GetMediaItemTrack)(MediaItem* item);
1830#endif
1831
1832#if defined(REAPERAPI_WANT_GetMediaSourceFileName) || !defined(REAPERAPI_MINIMAL)
1833REAPERAPI_DEF //==============================================
1834// GetMediaSourceFileName
1835// Copies the media source filename to typebuf. Note that in-project MIDI media sources have no associated filename. See GetMediaSourceParent.
1836
1837 void (*GetMediaSourceFileName)(PCM_source* source, char* filenamebuf, int filenamebuf_sz);
1838#endif
1839
1840#if defined(REAPERAPI_WANT_GetMediaSourceLength) || !defined(REAPERAPI_MINIMAL)
1841REAPERAPI_DEF //==============================================
1842// GetMediaSourceLength
1843// 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.
1844
1845 double (*GetMediaSourceLength)(PCM_source* source, bool* lengthIsQNOut);
1846#endif
1847
1848#if defined(REAPERAPI_WANT_GetMediaSourceNumChannels) || !defined(REAPERAPI_MINIMAL)
1849REAPERAPI_DEF //==============================================
1850// GetMediaSourceNumChannels
1851// Returns the number of channels in the source media.
1852
1853 int (*GetMediaSourceNumChannels)(PCM_source* source);
1854#endif
1855
1856#if defined(REAPERAPI_WANT_GetMediaSourceParent) || !defined(REAPERAPI_MINIMAL)
1857REAPERAPI_DEF //==============================================
1858// GetMediaSourceParent
1859// 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.
1860
1861 PCM_source* (*GetMediaSourceParent)(PCM_source* src);
1862#endif
1863
1864#if defined(REAPERAPI_WANT_GetMediaSourceSampleRate) || !defined(REAPERAPI_MINIMAL)
1865REAPERAPI_DEF //==============================================
1866// GetMediaSourceSampleRate
1867// Returns the sample rate. MIDI source media will return zero.
1868
1869 int (*GetMediaSourceSampleRate)(PCM_source* source);
1870#endif
1871
1872#if defined(REAPERAPI_WANT_GetMediaSourceType) || !defined(REAPERAPI_MINIMAL)
1873REAPERAPI_DEF //==============================================
1874// GetMediaSourceType
1875// copies the media source type ("WAV", "MIDI", etc) to typebuf
1876
1877 void (*GetMediaSourceType)(PCM_source* source, char* typebuf, int typebuf_sz);
1878#endif
1879
1880#if defined(REAPERAPI_WANT_GetMediaTrackInfo_Value) || !defined(REAPERAPI_MINIMAL)
1881REAPERAPI_DEF //==============================================
1882// GetMediaTrackInfo_Value
1883// Get track numerical-value attributes.
1884// B_MUTE : bool * : mute flag
1885// B_PHASE : bool * : invert track phase
1886// IP_TRACKNUMBER : int : track number (returns zero if not found, -1 for master track) (read-only, returns the int directly)
1887// I_SOLO : int * : 0=not soloed, 1=solo, 2=soloed in place
1888// I_FXEN : int * : 0=fx bypassed, nonzero = fx active
1889// I_RECARM : int * : 0=not record armed, 1=record armed
1890// 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)
1891// 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
1892// I_RECMON : int * : record monitor (0=off, 1=normal, 2=not when playing (tapestyle))
1893// I_RECMONITEMS : int * : monitor items while recording (0=off, 1=on)
1894// I_AUTOMODE : int * : track automation mode (0=trim/off, 1=read, 2=touch, 3=write, 4=latch)
1895// I_NCHAN : int * : number of track channels, must be 2-64, even
1896// I_SELECTED : int * : track selected? 0 or 1
1897// I_WNDH : int * : current TCP window height (Read-only)
1898// 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
1899// I_FOLDERCOMPACT : int * : folder compacting (only valid on folders), 0=normal, 1=small, 2=tiny children
1900// 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))
1901// I_PERFFLAGS : int * : track perf flags (&1=no media buffering, &2=no anticipative FX)
1902// 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).
1903// I_HEIGHTOVERRIDE : int * : custom height override for TCP window. 0 for none, otherwise size in pixels
1904// D_VOL : double * : trim volume of track (0 (-inf)..1 (+0dB) .. 2 (+6dB) etc ..)
1905// D_PAN : double * : trim pan of track (-1..1)
1906// D_WIDTH : double * : width of track (-1..1)
1907// D_DUALPANL : double * : dualpan position 1 (-1..1), only if I_PANMODE==6
1908// D_DUALPANR : double * : dualpan position 2 (-1..1), only if I_PANMODE==6
1909// I_PANMODE : int * : pan mode (0 = classic 3.x, 3=new balance, 5=stereo pan, 6 = dual pan)
1910// D_PANLAW : double * : pan law of track. <0 for project default, 1.0 for +0dB, etc
1911// P_ENV : read only, returns TrackEnvelope *, setNewValue=<VOLENV, <PANENV, etc
1912// B_SHOWINMIXER : bool * : show track panel in mixer -- do not use on master
1913// B_SHOWINTCP : bool * : show track panel in tcp -- do not use on master
1914// B_MAINSEND : bool * : track sends audio to parent
1915// C_MAINSEND_OFFS : char * : track send to parent channel offset
1916// B_FREEMODE : bool * : track free-mode enabled (requires UpdateTimeline() after changing etc)
1917// C_BEATATTACHMODE : char * : char * to one char of beat attached mode, -1=def, 0=time, 1=allbeats, 2=beatsposonly
1918// F_MCP_FXSEND_SCALE : float * : scale of fx+send area in MCP (0.0=smallest allowed, 1=max allowed)
1919// F_MCP_SENDRGN_SCALE : float * : scale of send area as proportion of the fx+send total area (0=min allow, 1=max)
1920
1921 double (*GetMediaTrackInfo_Value)(MediaTrack* tr, const char* parmname);
1922#endif
1923
1924#if defined(REAPERAPI_WANT_GetMIDIInputName) || !defined(REAPERAPI_MINIMAL)
1925REAPERAPI_DEF //==============================================
1926// GetMIDIInputName
1927// returns true if device present
1928
1929 bool (*GetMIDIInputName)(int dev, char* nameout, int nameout_sz);
1930#endif
1931
1932#if defined(REAPERAPI_WANT_GetMIDIOutputName) || !defined(REAPERAPI_MINIMAL)
1933REAPERAPI_DEF //==============================================
1934// GetMIDIOutputName
1935// returns true if device present
1936
1937 bool (*GetMIDIOutputName)(int dev, char* nameout, int nameout_sz);
1938#endif
1939
1940#if defined(REAPERAPI_WANT_GetMixerScroll) || !defined(REAPERAPI_MINIMAL)
1941REAPERAPI_DEF //==============================================
1942// GetMixerScroll
1943// Get the leftmost track visible in the mixer
1944
1945 MediaTrack* (*GetMixerScroll)();
1946#endif
1947
1948#if defined(REAPERAPI_WANT_GetMouseModifier) || !defined(REAPERAPI_MINIMAL)
1949REAPERAPI_DEF //==============================================
1950// GetMouseModifier
1951// Get the current mouse modifier assignment for a specific modifier key assignment, in a specific context.
1952// action will be filled in with the command ID number for a built-in mouse modifier
1953// or built-in REAPER command ID, or the custom action ID string.
1954// See SetMouseModifier for more information.
1955
1956 void (*GetMouseModifier)(const char* context, int modifier_flag, char* action, int action_sz);
1957#endif
1958
1959#if defined(REAPERAPI_WANT_GetMousePosition) || !defined(REAPERAPI_MINIMAL)
1960REAPERAPI_DEF //==============================================
1961// GetMousePosition
1962// get mouse position in screen coordinates
1963
1964 void (*GetMousePosition)(int* xOut, int* yOut);
1965#endif
1966
1967#if defined(REAPERAPI_WANT_GetNumAudioInputs) || !defined(REAPERAPI_MINIMAL)
1968REAPERAPI_DEF //==============================================
1969// GetNumAudioInputs
1970// Return number of normal audio hardware inputs available
1971
1972 int (*GetNumAudioInputs)();
1973#endif
1974
1975#if defined(REAPERAPI_WANT_GetNumAudioOutputs) || !defined(REAPERAPI_MINIMAL)
1976REAPERAPI_DEF //==============================================
1977// GetNumAudioOutputs
1978// Return number of normal audio hardware outputs available
1979
1980 int (*GetNumAudioOutputs)();
1981#endif
1982
1983#if defined(REAPERAPI_WANT_GetNumMIDIInputs) || !defined(REAPERAPI_MINIMAL)
1984REAPERAPI_DEF //==============================================
1985// GetNumMIDIInputs
1986// returns max number of real midi hardware inputs
1987
1988 int (*GetNumMIDIInputs)();
1989#endif
1990
1991#if defined(REAPERAPI_WANT_GetNumMIDIOutputs) || !defined(REAPERAPI_MINIMAL)
1992REAPERAPI_DEF //==============================================
1993// GetNumMIDIOutputs
1994// returns max number of real midi hardware outputs
1995
1996 int (*GetNumMIDIOutputs)();
1997#endif
1998
1999#if defined(REAPERAPI_WANT_GetNumTracks) || !defined(REAPERAPI_MINIMAL)
2000REAPERAPI_DEF //==============================================
2001// GetNumTracks
2002
2003 int (*GetNumTracks)();
2004#endif
2005
2006#if defined(REAPERAPI_WANT_GetOS) || !defined(REAPERAPI_MINIMAL)
2007REAPERAPI_DEF //==============================================
2008// GetOS
2009// Returns "Win32", "Win64", "OSX32", "OSX64", or "Other".
2010
2011 const char* (*GetOS)();
2012#endif
2013
2014#if defined(REAPERAPI_WANT_GetOutputChannelName) || !defined(REAPERAPI_MINIMAL)
2015REAPERAPI_DEF //==============================================
2016// GetOutputChannelName
2017
2018 const char* (*GetOutputChannelName)(int channelIndex);
2019#endif
2020
2021#if defined(REAPERAPI_WANT_GetOutputLatency) || !defined(REAPERAPI_MINIMAL)
2022REAPERAPI_DEF //==============================================
2023// GetOutputLatency
2024// returns output latency in seconds
2025
2026 double (*GetOutputLatency)();
2027#endif
2028
2029#if defined(REAPERAPI_WANT_GetParentTrack) || !defined(REAPERAPI_MINIMAL)
2030REAPERAPI_DEF //==============================================
2031// GetParentTrack
2032
2033 MediaTrack* (*GetParentTrack)(MediaTrack* track);
2034#endif
2035
2036#if defined(REAPERAPI_WANT_GetPeakFileName) || !defined(REAPERAPI_MINIMAL)
2037REAPERAPI_DEF //==============================================
2038// GetPeakFileName
2039// get the peak file name for a given file (can be either filename.reapeaks,or a hashed filename in another path)
2040
2041 void (*GetPeakFileName)(const char* fn, char* buf, int buf_sz);
2042#endif
2043
2044#if defined(REAPERAPI_WANT_GetPeakFileNameEx) || !defined(REAPERAPI_MINIMAL)
2045REAPERAPI_DEF //==============================================
2046// GetPeakFileNameEx
2047// get the peak file name for a given file (can be either filename.reapeaks,or a hashed filename in another path)
2048
2049 void (*GetPeakFileNameEx)(const char* fn, char* buf, int buf_sz, bool forWrite);
2050#endif
2051
2052#if defined(REAPERAPI_WANT_GetPeakFileNameEx2) || !defined(REAPERAPI_MINIMAL)
2053REAPERAPI_DEF //==============================================
2054// GetPeakFileNameEx2
2055// Like GetPeakFileNameEx, but you can specify peaksfileextension such as ".reapeaks"
2056
2057 void (*GetPeakFileNameEx2)(const char* fn, char* buf, int buf_sz, bool forWrite, const char* peaksfileextension);
2058#endif
2059
2060#if defined(REAPERAPI_WANT_GetPeaksBitmap) || !defined(REAPERAPI_MINIMAL)
2061REAPERAPI_DEF //==============================================
2062// GetPeaksBitmap
2063// see note in reaper_plugin.h about PCM_source_peaktransfer_t::samplerate
2064
2065 void* (*GetPeaksBitmap)(PCM_source_peaktransfer_t* pks, double maxamp, int w, int h, LICE_IBitmap* bmp);
2066#endif
2067
2068#if defined(REAPERAPI_WANT_GetPlayPosition) || !defined(REAPERAPI_MINIMAL)
2069REAPERAPI_DEF //==============================================
2070// GetPlayPosition
2071// returns latency-compensated actual-what-you-hear position
2072
2073 double (*GetPlayPosition)();
2074#endif
2075
2076#if defined(REAPERAPI_WANT_GetPlayPosition2) || !defined(REAPERAPI_MINIMAL)
2077REAPERAPI_DEF //==============================================
2078// GetPlayPosition2
2079// returns position of next audio block being processed
2080
2081 double (*GetPlayPosition2)();
2082#endif
2083
2084#if defined(REAPERAPI_WANT_GetPlayPosition2Ex) || !defined(REAPERAPI_MINIMAL)
2085REAPERAPI_DEF //==============================================
2086// GetPlayPosition2Ex
2087// returns position of next audio block being processed
2088
2089 double (*GetPlayPosition2Ex)(ReaProject* proj);
2090#endif
2091
2092#if defined(REAPERAPI_WANT_GetPlayPositionEx) || !defined(REAPERAPI_MINIMAL)
2093REAPERAPI_DEF //==============================================
2094// GetPlayPositionEx
2095// returns latency-compensated actual-what-you-hear position
2096
2097 double (*GetPlayPositionEx)(ReaProject* proj);
2098#endif
2099
2100#if defined(REAPERAPI_WANT_GetPlayState) || !defined(REAPERAPI_MINIMAL)
2101REAPERAPI_DEF //==============================================
2102// GetPlayState
2103// &1=playing,&2=pause,&=4 is recording
2104
2105 int (*GetPlayState)();
2106#endif
2107
2108#if defined(REAPERAPI_WANT_GetPlayStateEx) || !defined(REAPERAPI_MINIMAL)
2109REAPERAPI_DEF //==============================================
2110// GetPlayStateEx
2111// &1=playing,&2=pause,&=4 is recording
2112
2113 int (*GetPlayStateEx)(ReaProject* proj);
2114#endif
2115
2116#if defined(REAPERAPI_WANT_GetPreferredDiskReadMode) || !defined(REAPERAPI_MINIMAL)
2117REAPERAPI_DEF //==============================================
2118// GetPreferredDiskReadMode
2119// Gets user configured preferred disk read mode. mode/nb/bs are all parameters that should be passed to WDL_FileRead, see for more information.
2120
2121 void (*GetPreferredDiskReadMode)(int* mode, int* nb, int* bs);
2122#endif
2123
2124#if defined(REAPERAPI_WANT_GetPreferredDiskReadModePeak) || !defined(REAPERAPI_MINIMAL)
2125REAPERAPI_DEF //==============================================
2126// GetPreferredDiskReadModePeak
2127// 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.
2128
2129 void (*GetPreferredDiskReadModePeak)(int* mode, int* nb, int* bs);
2130#endif
2131
2132#if defined(REAPERAPI_WANT_GetPreferredDiskWriteMode) || !defined(REAPERAPI_MINIMAL)
2133REAPERAPI_DEF //==============================================
2134// GetPreferredDiskWriteMode
2135// 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.
2136
2137 void (*GetPreferredDiskWriteMode)(int* mode, int* nb, int* bs);
2138#endif
2139
2140#if defined(REAPERAPI_WANT_GetProjectLength) || !defined(REAPERAPI_MINIMAL)
2141REAPERAPI_DEF //==============================================
2142// GetProjectLength
2143// returns length of project (maximum of end of media item, markers, end of regions, tempo map
2144
2145 double (*GetProjectLength)(ReaProject* proj);
2146#endif
2147
2148#if defined(REAPERAPI_WANT_GetProjectName) || !defined(REAPERAPI_MINIMAL)
2149REAPERAPI_DEF //==============================================
2150// GetProjectName
2151
2152 void (*GetProjectName)(ReaProject* proj, char* buf, int buf_sz);
2153#endif
2154
2155#if defined(REAPERAPI_WANT_GetProjectPath) || !defined(REAPERAPI_MINIMAL)
2156REAPERAPI_DEF //==============================================
2157// GetProjectPath
2158
2159 void (*GetProjectPath)(char* buf, int buf_sz);
2160#endif
2161
2162#if defined(REAPERAPI_WANT_GetProjectPathEx) || !defined(REAPERAPI_MINIMAL)
2163REAPERAPI_DEF //==============================================
2164// GetProjectPathEx
2165
2166 void (*GetProjectPathEx)(ReaProject* proj, char* buf, int buf_sz);
2167#endif
2168
2169#if defined(REAPERAPI_WANT_GetProjectStateChangeCount) || !defined(REAPERAPI_MINIMAL)
2170REAPERAPI_DEF //==============================================
2171// GetProjectStateChangeCount
2172// returns an integer that changes when the project state changes
2173
2174 int (*GetProjectStateChangeCount)(ReaProject* proj);
2175#endif
2176
2177#if defined(REAPERAPI_WANT_GetProjectTimeOffset) || !defined(REAPERAPI_MINIMAL)
2178REAPERAPI_DEF //==============================================
2179// GetProjectTimeOffset
2180// 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.
2181
2182 double (*GetProjectTimeOffset)(ReaProject* proj, bool rndframe);
2183#endif
2184
2185#if defined(REAPERAPI_WANT_GetProjectTimeSignature) || !defined(REAPERAPI_MINIMAL)
2186REAPERAPI_DEF //==============================================
2187// GetProjectTimeSignature
2188// deprecated
2189
2190 void (*GetProjectTimeSignature)(double* bpmOut, double* bpiOut);
2191#endif
2192
2193#if defined(REAPERAPI_WANT_GetProjectTimeSignature2) || !defined(REAPERAPI_MINIMAL)
2194REAPERAPI_DEF //==============================================
2195// GetProjectTimeSignature2
2196// Gets basic time signature (beats per minute, numerator of time signature in bpi)
2197// this does not reflect tempo envelopes but is purely what is set in the project settings.
2198
2199 void (*GetProjectTimeSignature2)(ReaProject* proj, double* bpmOut, double* bpiOut);
2200#endif
2201
2202#if defined(REAPERAPI_WANT_GetProjExtState) || !defined(REAPERAPI_MINIMAL)
2203REAPERAPI_DEF //==============================================
2204// GetProjExtState
2205// Get the value previously associated with this extname and key, the last time the project was saved. See SetProjExtState, EnumProjExtState.
2206
2207 int (*GetProjExtState)(ReaProject* proj, const char* extname, const char* key, char* valOutNeedBig, int valOutNeedBig_sz);
2208#endif
2209
2210#if defined(REAPERAPI_WANT_GetResourcePath) || !defined(REAPERAPI_MINIMAL)
2211REAPERAPI_DEF //==============================================
2212// GetResourcePath
2213// returns path where ini files are stored, other things are in subdirectories.
2214
2215 const char* (*GetResourcePath)();
2216#endif
2217
2218#if defined(REAPERAPI_WANT_GetSelectedEnvelope) || !defined(REAPERAPI_MINIMAL)
2219REAPERAPI_DEF //==============================================
2220// GetSelectedEnvelope
2221// get the currently selected envelope, returns 0 if no envelope is selected
2222
2223 TrackEnvelope* (*GetSelectedEnvelope)(ReaProject* proj);
2224#endif
2225
2226#if defined(REAPERAPI_WANT_GetSelectedMediaItem) || !defined(REAPERAPI_MINIMAL)
2227REAPERAPI_DEF //==============================================
2228// GetSelectedMediaItem
2229// get a selected item by selected item count (zero-based) (proj=0 for active project)
2230
2231 MediaItem* (*GetSelectedMediaItem)(ReaProject* proj, int selitem);
2232#endif
2233
2234#if defined(REAPERAPI_WANT_GetSelectedTrack) || !defined(REAPERAPI_MINIMAL)
2235REAPERAPI_DEF //==============================================
2236// GetSelectedTrack
2237// Get a selected track from a project (proj=0 for active project) by selected track count (zero-based). This function ignores the master track, see GetSelectedTrack2.
2238
2239 MediaTrack* (*GetSelectedTrack)(ReaProject* proj, int seltrackidx);
2240#endif
2241
2242#if defined(REAPERAPI_WANT_GetSelectedTrack2) || !defined(REAPERAPI_MINIMAL)
2243REAPERAPI_DEF //==============================================
2244// GetSelectedTrack2
2245// Get a selected track from a project (proj=0 for active project) by selected track count (zero-based).
2246
2247 MediaTrack* (*GetSelectedTrack2)(ReaProject* proj, int seltrackidx, bool wantmaster);
2248#endif
2249
2250#if defined(REAPERAPI_WANT_GetSelectedTrackEnvelope) || !defined(REAPERAPI_MINIMAL)
2251REAPERAPI_DEF //==============================================
2252// GetSelectedTrackEnvelope
2253// get the currently selected track envelope, returns 0 if no envelope is selected
2254
2255 TrackEnvelope* (*GetSelectedTrackEnvelope)(ReaProject* proj);
2256#endif
2257
2258#if defined(REAPERAPI_WANT_GetSet_ArrangeView2) || !defined(REAPERAPI_MINIMAL)
2259REAPERAPI_DEF //==============================================
2260// GetSet_ArrangeView2
2261// Gets or sets the arrange view start/end time for screen coordinates. use screen_x_start=screen_x_end=0 to use the full arrange view's start/end time
2262
2263 void (*GetSet_ArrangeView2)(ReaProject* proj, bool isSet, int screen_x_start, int screen_x_end, double* start_timeOut, double* end_timeOut);
2264#endif
2265
2266#if defined(REAPERAPI_WANT_GetSet_LoopTimeRange) || !defined(REAPERAPI_MINIMAL)
2267REAPERAPI_DEF //==============================================
2268// GetSet_LoopTimeRange
2269
2270 void (*GetSet_LoopTimeRange)(bool isSet, bool isLoop, double* startOut, double* endOut, bool allowautoseek);
2271#endif
2272
2273#if defined(REAPERAPI_WANT_GetSet_LoopTimeRange2) || !defined(REAPERAPI_MINIMAL)
2274REAPERAPI_DEF //==============================================
2275// GetSet_LoopTimeRange2
2276
2277 void (*GetSet_LoopTimeRange2)(ReaProject* proj, bool isSet, bool isLoop, double* startOut, double* endOut, bool allowautoseek);
2278#endif
2279
2280#if defined(REAPERAPI_WANT_GetSetAutomationItemInfo) || !defined(REAPERAPI_MINIMAL)
2281REAPERAPI_DEF //==============================================
2282// GetSetAutomationItemInfo
2283// Get or set automation item information. autoitem_idx==0 for the first automation item on an envelope, 1 for the second item, etc. desc can be any of the following:
2284// D_POOL_ID: double *, automation item pool ID (as an integer); edits are propagated to all other automation items that share a pool ID
2285// D_POSITION: double *, automation item timeline position in seconds
2286// D_LENGTH: double *, automation item length in seconds
2287// D_STARTOFFS: double *, automation item start offset in seconds
2288// D_PLAYRATE: double *, automation item playback rate
2289// D_BASELINE: double *, automation item baseline value in the range [0,1]
2290// D_AMPLITUDE: double *, automation item amplitude in the range [-1,1]
2291// D_LOOPSRC: double *, nonzero if the automation item contents are looped
2292// D_UISEL: double *, nonzero if the automation item is selected in the arrange view
2293//
2294
2295 double (*GetSetAutomationItemInfo)(TrackEnvelope* env, int autoitem_idx, const char* desc, double value, bool is_set);
2296#endif
2297
2298#if defined(REAPERAPI_WANT_GetSetEnvelopeState) || !defined(REAPERAPI_MINIMAL)
2299REAPERAPI_DEF //==============================================
2300// GetSetEnvelopeState
2301// deprecated -- see SetEnvelopeStateChunk, GetEnvelopeStateChunk
2302
2303 bool (*GetSetEnvelopeState)(TrackEnvelope* env, char* str, int str_sz);
2304#endif
2305
2306#if defined(REAPERAPI_WANT_GetSetEnvelopeState2) || !defined(REAPERAPI_MINIMAL)
2307REAPERAPI_DEF //==============================================
2308// GetSetEnvelopeState2
2309// deprecated -- see SetEnvelopeStateChunk, GetEnvelopeStateChunk
2310
2311 bool (*GetSetEnvelopeState2)(TrackEnvelope* env, char* str, int str_sz, bool isundo);
2312#endif
2313
2314#if defined(REAPERAPI_WANT_GetSetItemState) || !defined(REAPERAPI_MINIMAL)
2315REAPERAPI_DEF //==============================================
2316// GetSetItemState
2317// deprecated -- see SetItemStateChunk, GetItemStateChunk
2318
2319 bool (*GetSetItemState)(MediaItem* item, char* str, int str_sz);
2320#endif
2321
2322#if defined(REAPERAPI_WANT_GetSetItemState2) || !defined(REAPERAPI_MINIMAL)
2323REAPERAPI_DEF //==============================================
2324// GetSetItemState2
2325// deprecated -- see SetItemStateChunk, GetItemStateChunk
2326
2327 bool (*GetSetItemState2)(MediaItem* item, char* str, int str_sz, bool isundo);
2328#endif
2329
2330#if defined(REAPERAPI_WANT_GetSetMediaItemInfo) || !defined(REAPERAPI_MINIMAL)
2331REAPERAPI_DEF //==============================================
2332// GetSetMediaItemInfo
2333// P_TRACK : MediaTrack * (read only)
2334// P_NOTES : char * : item note text (do not write to returned pointer, use setNewValue to update)
2335// B_MUTE : bool * to muted state
2336// B_LOOPSRC : bool * to loop source
2337// B_ALLTAKESPLAY : bool * to all takes play
2338// B_UISEL : bool * to ui selected
2339// C_BEATATTACHMODE : char * to one char of beat attached mode, -1=def, 0=time, 1=allbeats, 2=beatsosonly
2340// C_LOCK : char * to one char of lock flags (&1 is locked, currently)
2341// D_VOL : double * of item volume (volume bar)
2342// D_POSITION : double * of item position (seconds)
2343// D_LENGTH : double * of item length (seconds)
2344// D_SNAPOFFSET : double * of item snap offset (seconds)
2345// D_FADEINLEN : double * of item fade in length (manual, seconds)
2346// D_FADEOUTLEN : double * of item fade out length (manual, seconds)
2347// D_FADEINDIR : double * of item fade in curve [-1; 1]
2348// D_FADEOUTDIR : double * of item fade out curve [-1; 1]
2349// D_FADEINLEN_AUTO : double * of item autofade in length (seconds, -1 for no autofade set)
2350// D_FADEOUTLEN_AUTO : double * of item autofade out length (seconds, -1 for no autofade set)
2351// C_FADEINSHAPE : int * to fadein shape, 0=linear, ...
2352// C_FADEOUTSHAPE : int * to fadeout shape
2353// I_GROUPID : int * to group ID (0 = no group)
2354// I_LASTY : int * to last y position in track (readonly)
2355// I_LASTH : int * to last height in track (readonly)
2356// 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).
2357// I_CURTAKE : int * to active take
2358// IP_ITEMNUMBER : int, item number within the track (read-only, returns the item number directly)
2359// F_FREEMODE_Y : float * to free mode y position (0..1)
2360// F_FREEMODE_H : float * to free mode height (0..1)
2361
2362 void* (*GetSetMediaItemInfo)(MediaItem* item, const char* parmname, void* setNewValue);
2363#endif
2364
2365#if defined(REAPERAPI_WANT_GetSetMediaItemTakeInfo) || !defined(REAPERAPI_MINIMAL)
2366REAPERAPI_DEF //==============================================
2367// GetSetMediaItemTakeInfo
2368// P_TRACK : pointer to MediaTrack (read-only)
2369// P_ITEM : pointer to MediaItem (read-only)
2370// P_SOURCE : PCM_source *. Note that if setting this, you should first retrieve the old source, set the new, THEN delete the old.
2371// GUID : GUID * : 16-byte GUID, can query or update
2372// P_NAME : char * to take name
2373// D_STARTOFFS : double *, start offset in take of item
2374// D_VOL : double *, take volume
2375// D_PAN : double *, take pan
2376// D_PANLAW : double *, take pan law (-1.0=default, 0.5=-6dB, 1.0=+0dB, etc)
2377// D_PLAYRATE : double *, take playrate (1.0=normal, 2.0=doublespeed, etc)
2378// D_PITCH : double *, take pitch adjust (in semitones, 0.0=normal, +12 = one octave up, etc)
2379// B_PPITCH, bool *, preserve pitch when changing rate
2380// I_CHANMODE, int *, channel mode (0=normal, 1=revstereo, 2=downmix, 3=l, 4=r)
2381// I_PITCHMODE, int *, pitch shifter mode, -1=proj default, otherwise high word=shifter low word = parameter
2382// 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).
2383// IP_TAKENUMBER : int, take number within the item (read-only, returns the take number directly)
2384
2385 void* (*GetSetMediaItemTakeInfo)(MediaItem_Take* tk, const char* parmname, void* setNewValue);
2386#endif
2387
2388#if defined(REAPERAPI_WANT_GetSetMediaItemTakeInfo_String) || !defined(REAPERAPI_MINIMAL)
2389REAPERAPI_DEF //==============================================
2390// GetSetMediaItemTakeInfo_String
2391// P_NAME : char * to take name
2392
2393 bool (*GetSetMediaItemTakeInfo_String)(MediaItem_Take* tk, const char* parmname, char* stringNeedBig, bool setNewValue);
2394#endif
2395
2396#if defined(REAPERAPI_WANT_GetSetMediaTrackInfo) || !defined(REAPERAPI_MINIMAL)
2397REAPERAPI_DEF //==============================================
2398// GetSetMediaTrackInfo
2399// Get or set track attributes.
2400// P_PARTRACK : MediaTrack * : parent track (read-only)
2401// GUID : GUID * : 16-byte GUID, can query or update (do not use on master though)
2402// P_NAME : char * : track name (on master returns NULL)
2403// P_ICON : const char * : track icon (full filename, or relative to resource_path/data/track_icons)
2404// P_MCP_LAYOUT : const char * : layout name
2405// P_TCP_LAYOUT : const char * : layout name
2406//
2407// B_MUTE : bool * : mute flag
2408// B_PHASE : bool * : invert track phase
2409// IP_TRACKNUMBER : int : track number (returns zero if not found, -1 for master track) (read-only, returns the int directly)
2410// I_SOLO : int * : 0=not soloed, 1=solo, 2=soloed in place
2411// I_FXEN : int * : 0=fx bypassed, nonzero = fx active
2412// I_RECARM : int * : 0=not record armed, 1=record armed
2413// 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)
2414// 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
2415// I_RECMON : int * : record monitor (0=off, 1=normal, 2=not when playing (tapestyle))
2416// I_RECMONITEMS : int * : monitor items while recording (0=off, 1=on)
2417// I_AUTOMODE : int * : track automation mode (0=trim/off, 1=read, 2=touch, 3=write, 4=latch)
2418// I_NCHAN : int * : number of track channels, must be 2-64, even
2419// I_SELECTED : int * : track selected? 0 or 1
2420// I_WNDH : int * : current TCP window height (Read-only)
2421// 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
2422// I_FOLDERCOMPACT : int * : folder compacting (only valid on folders), 0=normal, 1=small, 2=tiny children
2423// 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))
2424// I_PERFFLAGS : int * : track perf flags (&1=no media buffering, &2=no anticipative FX)
2425// 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).
2426// I_HEIGHTOVERRIDE : int * : custom height override for TCP window. 0 for none, otherwise size in pixels
2427// D_VOL : double * : trim volume of track (0 (-inf)..1 (+0dB) .. 2 (+6dB) etc ..)
2428// D_PAN : double * : trim pan of track (-1..1)
2429// D_WIDTH : double * : width of track (-1..1)
2430// D_DUALPANL : double * : dualpan position 1 (-1..1), only if I_PANMODE==6
2431// D_DUALPANR : double * : dualpan position 2 (-1..1), only if I_PANMODE==6
2432// I_PANMODE : int * : pan mode (0 = classic 3.x, 3=new balance, 5=stereo pan, 6 = dual pan)
2433// D_PANLAW : double * : pan law of track. <0 for project default, 1.0 for +0dB, etc
2434// P_ENV : read only, returns TrackEnvelope *, setNewValue=<VOLENV, <PANENV, etc
2435// B_SHOWINMIXER : bool * : show track panel in mixer -- do not use on master
2436// B_SHOWINTCP : bool * : show track panel in tcp -- do not use on master
2437// B_MAINSEND : bool * : track sends audio to parent
2438// C_MAINSEND_OFFS : char * : track send to parent channel offset
2439// B_FREEMODE : bool * : track free-mode enabled (requires UpdateTimeline() after changing etc)
2440// C_BEATATTACHMODE : char * : char * to one char of beat attached mode, -1=def, 0=time, 1=allbeats, 2=beatsposonly
2441// F_MCP_FXSEND_SCALE : float * : scale of fx+send area in MCP (0.0=smallest allowed, 1=max allowed)
2442// F_MCP_SENDRGN_SCALE : float * : scale of send area as proportion of the fx+send total area (0=min allow, 1=max)
2443
2444 void* (*GetSetMediaTrackInfo)(MediaTrack* tr, const char* parmname, void* setNewValue);
2445#endif
2446
2447#if defined(REAPERAPI_WANT_GetSetMediaTrackInfo_String) || !defined(REAPERAPI_MINIMAL)
2448REAPERAPI_DEF //==============================================
2449// GetSetMediaTrackInfo_String
2450// Get or set track string attributes.
2451// P_NAME : char * : track name (on master returns NULL)
2452// P_ICON : const char * : track icon (full filename, or relative to resource_path/data/track_icons)
2453// P_MCP_LAYOUT : const char * : layout name
2454// P_TCP_LAYOUT : const char * : layout name
2455//
2456
2457 bool (*GetSetMediaTrackInfo_String)(MediaTrack* tr, const char* parmname, char* stringNeedBig, bool setNewValue);
2458#endif
2459
2460#if defined(REAPERAPI_WANT_GetSetObjectState) || !defined(REAPERAPI_MINIMAL)
2461REAPERAPI_DEF //==============================================
2462// GetSetObjectState
2463// get or set the state of a {track,item,envelope} as an RPPXML chunk
2464// str="" to get the chunk string returned (must call FreeHeapPtr when done)
2465// supply str to set the state (returns zero)
2466
2467 char* (*GetSetObjectState)(void* obj, const char* str);
2468#endif
2469
2470#if defined(REAPERAPI_WANT_GetSetObjectState2) || !defined(REAPERAPI_MINIMAL)
2471REAPERAPI_DEF //==============================================
2472// GetSetObjectState2
2473// get or set the state of a {track,item,envelope} as an RPPXML chunk
2474// str="" to get the chunk string returned (must call FreeHeapPtr when done)
2475// supply str to set the state (returns zero)
2476// set isundo if the state will be used for undo purposes (which may allow REAPER to get the state more efficiently
2477
2478 char* (*GetSetObjectState2)(void* obj, const char* str, bool isundo);
2479#endif
2480
2481#if defined(REAPERAPI_WANT_GetSetProjectAuthor) || !defined(REAPERAPI_MINIMAL)
2482REAPERAPI_DEF //==============================================
2483// GetSetProjectAuthor
2484// gets or sets project author, author_sz is ignored when setting
2485
2486 void (*GetSetProjectAuthor)(ReaProject* proj, bool set, char* author, int author_sz);
2487#endif
2488
2489#if defined(REAPERAPI_WANT_GetSetProjectGrid) || !defined(REAPERAPI_MINIMAL)
2490REAPERAPI_DEF //==============================================
2491// GetSetProjectGrid
2492// Get or set the arrange view grid division. 0.25=quarter note, 1.0/3.0=half note triplet, etc. swingmode can be 1 for swing enabled, swingamt is -1..1. Returns grid configuration flags
2493
2494 int (*GetSetProjectGrid)(ReaProject* project, bool set, double* divisionInOutOptional, int* swingmodeInOutOptional, double* swingamtInOutOptional);
2495#endif
2496
2497#if defined(REAPERAPI_WANT_GetSetProjectNotes) || !defined(REAPERAPI_MINIMAL)
2498REAPERAPI_DEF //==============================================
2499// GetSetProjectNotes
2500// gets or sets project notes, notesNeedBig_sz is ignored when setting
2501
2502 void (*GetSetProjectNotes)(ReaProject* proj, bool set, char* notesNeedBig, int notesNeedBig_sz);
2503#endif
2504
2505#if defined(REAPERAPI_WANT_GetSetRepeat) || !defined(REAPERAPI_MINIMAL)
2506REAPERAPI_DEF //==============================================
2507// GetSetRepeat
2508// -1 == query,0=clear,1=set,>1=toggle . returns new value
2509
2510 int (*GetSetRepeat)(int val);
2511#endif
2512
2513#if defined(REAPERAPI_WANT_GetSetRepeatEx) || !defined(REAPERAPI_MINIMAL)
2514REAPERAPI_DEF //==============================================
2515// GetSetRepeatEx
2516// -1 == query,0=clear,1=set,>1=toggle . returns new value
2517
2518 int (*GetSetRepeatEx)(ReaProject* proj, int val);
2519#endif
2520
2521#if defined(REAPERAPI_WANT_GetSetTrackGroupMembership) || !defined(REAPERAPI_MINIMAL)
2522REAPERAPI_DEF //==============================================
2523// GetSetTrackGroupMembership
2524// Gets or modifies the group membership for a track. Returns group state prior to call (each bit represents one of the 32 group numbers). if setmask has bits set, those bits in setvalue will be applied to group. Group can be one of:
2525// VOLUME_MASTER
2526// VOLUME_SLAVE
2527// VOLUME_VCA_MASTER
2528// VOLUME_VCA_SLAVE
2529// PAN_MASTER
2530// PAN_SLAVE
2531// WIDTH_MASTER
2532// WIDTH_SLAVE
2533// MUTE_MASTER
2534// MUTE_SLAVE
2535// SOLO_MASTER
2536// SOLO_SLAVE
2537// RECARM_MASTER
2538// RECARM_SLAVE
2539// POLARITY_MASTER
2540// POLARITY_SLAVE
2541// AUTOMODE_MASTER
2542// AUTOMODE_SLAVE
2543// VOLUME_REVERSE
2544// PAN_REVERSE
2545// WIDTH_REVERSE
2546// NO_MASTER_WHEN_SLAVE
2547// VOLUME_VCA_SLAVE_ISPREFX
2548//
2549
2550 unsigned int (*GetSetTrackGroupMembership)(MediaTrack* tr, const char* groupname, unsigned int setmask, unsigned int setvalue);
2551#endif
2552
2553#if defined(REAPERAPI_WANT_GetSetTrackGroupMembershipHigh) || !defined(REAPERAPI_MINIMAL)
2554REAPERAPI_DEF //==============================================
2555// GetSetTrackGroupMembershipHigh
2556// Gets or modifies the group membership for a track. Returns group state prior to call (each bit represents one of the high 32 group numbers). if setmask has bits set, those bits in setvalue will be applied to group. Group can be one of:
2557// VOLUME_MASTER
2558// VOLUME_SLAVE
2559// VOLUME_VCA_MASTER
2560// VOLUME_VCA_SLAVE
2561// PAN_MASTER
2562// PAN_SLAVE
2563// WIDTH_MASTER
2564// WIDTH_SLAVE
2565// MUTE_MASTER
2566// MUTE_SLAVE
2567// SOLO_MASTER
2568// SOLO_SLAVE
2569// RECARM_MASTER
2570// RECARM_SLAVE
2571// POLARITY_MASTER
2572// POLARITY_SLAVE
2573// AUTOMODE_MASTER
2574// AUTOMODE_SLAVE
2575// VOLUME_REVERSE
2576// PAN_REVERSE
2577// WIDTH_REVERSE
2578// NO_MASTER_WHEN_SLAVE
2579// VOLUME_VCA_SLAVE_ISPREFX
2580//
2581
2582 unsigned int (*GetSetTrackGroupMembershipHigh)(MediaTrack* tr, const char* groupname, unsigned int setmask, unsigned int setvalue);
2583#endif
2584
2585#if defined(REAPERAPI_WANT_GetSetTrackMIDISupportFile) || !defined(REAPERAPI_MINIMAL)
2586REAPERAPI_DEF //==============================================
2587// GetSetTrackMIDISupportFile
2588// 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, 3=MIDI note mapping file. If fn != NULL, a new track MIDI storage file will be set; otherwise the existing track MIDI storage file will be returned.
2589
2590 const char* (*GetSetTrackMIDISupportFile)(ReaProject* proj, MediaTrack* track, int which, const char* filename);
2591#endif
2592
2593#if defined(REAPERAPI_WANT_GetSetTrackSendInfo) || !defined(REAPERAPI_MINIMAL)
2594REAPERAPI_DEF //==============================================
2595// GetSetTrackSendInfo
2596// Get or set send/receive/hardware output attributes.
2597// category is <0 for receives, 0=sends, >0 for hardware outputs
2598// sendidx is 0..n (to enumerate, iterate over sendidx until it returns NULL)
2599// parameter names:
2600// P_DESTTRACK : read only, returns MediaTrack *, destination track, only applies for sends/recvs
2601// P_SRCTRACK : read only, returns MediaTrack *, source track, only applies for sends/recvs
2602// P_ENV : read only, returns TrackEnvelope *, setNewValue=<VOLENV, <PANENV, etc
2603//
2604// B_MUTE : returns bool *
2605// B_PHASE : returns bool *, true to flip phase
2606// B_MONO : returns bool *
2607// D_VOL : returns double *, 1.0 = +0dB etc
2608// D_PAN : returns double *, -1..+1
2609// D_PANLAW : returns double *,1.0=+0.0db, 0.5=-6dB, -1.0 = projdef etc
2610// I_SENDMODE : returns int *, 0=post-fader, 1=pre-fx, 2=post-fx (deprecated), 3=post-fx
2611// I_AUTOMODE : returns int * : automation mode (-1=use track automode, 0=trim/off, 1=read, 2=touch, 3=write, 4=latch)
2612// I_SRCCHAN : returns int *, index,&1024=mono, -1 for none
2613// I_DSTCHAN : returns int *, index, &1024=mono, otherwise stereo pair, hwout:&512=rearoute
2614// I_MIDIFLAGS : returns int *, low 5 bits=source channel 0=all, 1-16, next 5 bits=dest channel, 0=orig, 1-16=chan
2615// See CreateTrackSend, RemoveTrackSend.
2616
2617 void* (*GetSetTrackSendInfo)(MediaTrack* tr, int category, int sendidx, const char* parmname, void* setNewValue);
2618#endif
2619
2620#if defined(REAPERAPI_WANT_GetSetTrackState) || !defined(REAPERAPI_MINIMAL)
2621REAPERAPI_DEF //==============================================
2622// GetSetTrackState
2623// deprecated -- see SetTrackStateChunk, GetTrackStateChunk
2624
2625 bool (*GetSetTrackState)(MediaTrack* track, char* str, int str_sz);
2626#endif
2627
2628#if defined(REAPERAPI_WANT_GetSetTrackState2) || !defined(REAPERAPI_MINIMAL)
2629REAPERAPI_DEF //==============================================
2630// GetSetTrackState2
2631// deprecated -- see SetTrackStateChunk, GetTrackStateChunk
2632
2633 bool (*GetSetTrackState2)(MediaTrack* track, char* str, int str_sz, bool isundo);
2634#endif
2635
2636#if defined(REAPERAPI_WANT_GetSubProjectFromSource) || !defined(REAPERAPI_MINIMAL)
2637REAPERAPI_DEF //==============================================
2638// GetSubProjectFromSource
2639
2640 ReaProject* (*GetSubProjectFromSource)(PCM_source* src);
2641#endif
2642
2643#if defined(REAPERAPI_WANT_GetTake) || !defined(REAPERAPI_MINIMAL)
2644REAPERAPI_DEF //==============================================
2645// GetTake
2646// get a take from an item by take count (zero-based)
2647
2648 MediaItem_Take* (*GetTake)(MediaItem* item, int takeidx);
2649#endif
2650
2651#if defined(REAPERAPI_WANT_GetTakeEnvelope) || !defined(REAPERAPI_MINIMAL)
2652REAPERAPI_DEF //==============================================
2653// GetTakeEnvelope
2654
2655 TrackEnvelope* (*GetTakeEnvelope)(MediaItem_Take* take, int envidx);
2656#endif
2657
2658#if defined(REAPERAPI_WANT_GetTakeEnvelopeByName) || !defined(REAPERAPI_MINIMAL)
2659REAPERAPI_DEF //==============================================
2660// GetTakeEnvelopeByName
2661
2662 TrackEnvelope* (*GetTakeEnvelopeByName)(MediaItem_Take* take, const char* envname);
2663#endif
2664
2665#if defined(REAPERAPI_WANT_GetTakeName) || !defined(REAPERAPI_MINIMAL)
2666REAPERAPI_DEF //==============================================
2667// GetTakeName
2668// returns NULL if the take is not valid
2669
2670 const char* (*GetTakeName)(MediaItem_Take* take);
2671#endif
2672
2673#if defined(REAPERAPI_WANT_GetTakeNumStretchMarkers) || !defined(REAPERAPI_MINIMAL)
2674REAPERAPI_DEF //==============================================
2675// GetTakeNumStretchMarkers
2676// Returns number of stretch markers in take
2677
2678 int (*GetTakeNumStretchMarkers)(MediaItem_Take* take);
2679#endif
2680
2681#if defined(REAPERAPI_WANT_GetTakeStretchMarker) || !defined(REAPERAPI_MINIMAL)
2682REAPERAPI_DEF //==============================================
2683// GetTakeStretchMarker
2684// 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.
2685
2686 int (*GetTakeStretchMarker)(MediaItem_Take* take, int idx, double* posOut, double* srcposOutOptional);
2687#endif
2688
2689#if defined(REAPERAPI_WANT_GetTakeStretchMarkerSlope) || !defined(REAPERAPI_MINIMAL)
2690REAPERAPI_DEF //==============================================
2691// GetTakeStretchMarkerSlope
2692// See SetTakeStretchMarkerSlope
2693
2694 double (*GetTakeStretchMarkerSlope)(MediaItem_Take* take, int idx);
2695#endif
2696
2697#if defined(REAPERAPI_WANT_GetTCPFXParm) || !defined(REAPERAPI_MINIMAL)
2698REAPERAPI_DEF //==============================================
2699// GetTCPFXParm
2700// Get information about a specific FX parameter knob (see CountTCPFXParms).
2701
2702 bool (*GetTCPFXParm)(ReaProject* project, MediaTrack* track, int index, int* fxindexOut, int* parmidxOut);
2703#endif
2704
2705#if defined(REAPERAPI_WANT_GetTempoMatchPlayRate) || !defined(REAPERAPI_MINIMAL)
2706REAPERAPI_DEF //==============================================
2707// GetTempoMatchPlayRate
2708// 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
2709
2710 bool (*GetTempoMatchPlayRate)(PCM_source* source, double srcscale, double position, double mult, double* rateOut, double* targetlenOut);
2711#endif
2712
2713#if defined(REAPERAPI_WANT_GetTempoTimeSigMarker) || !defined(REAPERAPI_MINIMAL)
2714REAPERAPI_DEF //==============================================
2715// GetTempoTimeSigMarker
2716// Get information about a tempo/time signature marker. See CountTempoTimeSigMarkers, SetTempoTimeSigMarker, AddTempoTimeSigMarker.
2717
2718 bool (*GetTempoTimeSigMarker)(ReaProject* proj, int ptidx, double* timeposOut, int* measureposOut, double* beatposOut, double* bpmOut, int* timesig_numOut, int* timesig_denomOut, bool* lineartempoOut);
2719#endif
2720
2721#if defined(REAPERAPI_WANT_GetToggleCommandState) || !defined(REAPERAPI_MINIMAL)
2722REAPERAPI_DEF //==============================================
2723// GetToggleCommandState
2724// See GetToggleCommandStateEx.
2725
2726 int (*GetToggleCommandState)(int command_id);
2727#endif
2728
2729#if defined(REAPERAPI_WANT_GetToggleCommandState2) || !defined(REAPERAPI_MINIMAL)
2730REAPERAPI_DEF //==============================================
2731// GetToggleCommandState2
2732// See GetToggleCommandStateEx.
2733
2734 int (*GetToggleCommandState2)(KbdSectionInfo* section, int command_id);
2735#endif
2736
2737#if defined(REAPERAPI_WANT_GetToggleCommandStateEx) || !defined(REAPERAPI_MINIMAL)
2738REAPERAPI_DEF //==============================================
2739// GetToggleCommandStateEx
2740// 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.
2741
2742 int (*GetToggleCommandStateEx)(int section_id, int command_id);
2743#endif
2744
2745#if defined(REAPERAPI_WANT_GetToggleCommandStateThroughHooks) || !defined(REAPERAPI_MINIMAL)
2746REAPERAPI_DEF //==============================================
2747// GetToggleCommandStateThroughHooks
2748// Returns the state of an action via extension plugins' hooks.
2749
2750 int (*GetToggleCommandStateThroughHooks)(KbdSectionInfo* section, int command_id);
2751#endif
2752
2753#if defined(REAPERAPI_WANT_GetTooltipWindow) || !defined(REAPERAPI_MINIMAL)
2754REAPERAPI_DEF //==============================================
2755// GetTooltipWindow
2756// gets a tooltip window,in case you want to ask it for font information. Can return NULL.
2757
2758 HWND (*GetTooltipWindow)();
2759#endif
2760
2761#if defined(REAPERAPI_WANT_GetTrack) || !defined(REAPERAPI_MINIMAL)
2762REAPERAPI_DEF //==============================================
2763// GetTrack
2764// get a track from a project by track count (zero-based) (proj=0 for active project)
2765
2766 MediaTrack* (*GetTrack)(ReaProject* proj, int trackidx);
2767#endif
2768
2769#if defined(REAPERAPI_WANT_GetTrackAutomationMode) || !defined(REAPERAPI_MINIMAL)
2770REAPERAPI_DEF //==============================================
2771// GetTrackAutomationMode
2772// return the track mode, regardless of global override
2773
2774 int (*GetTrackAutomationMode)(MediaTrack* tr);
2775#endif
2776
2777#if defined(REAPERAPI_WANT_GetTrackColor) || !defined(REAPERAPI_MINIMAL)
2778REAPERAPI_DEF //==============================================
2779// GetTrackColor
2780// 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.
2781
2782 int (*GetTrackColor)(MediaTrack* track);
2783#endif
2784
2785#if defined(REAPERAPI_WANT_GetTrackDepth) || !defined(REAPERAPI_MINIMAL)
2786REAPERAPI_DEF //==============================================
2787// GetTrackDepth
2788
2789 int (*GetTrackDepth)(MediaTrack* track);
2790#endif
2791
2792#if defined(REAPERAPI_WANT_GetTrackEnvelope) || !defined(REAPERAPI_MINIMAL)
2793REAPERAPI_DEF //==============================================
2794// GetTrackEnvelope
2795
2796 TrackEnvelope* (*GetTrackEnvelope)(MediaTrack* track, int envidx);
2797#endif
2798
2799#if defined(REAPERAPI_WANT_GetTrackEnvelopeByChunkName) || !defined(REAPERAPI_MINIMAL)
2800REAPERAPI_DEF //==============================================
2801// GetTrackEnvelopeByChunkName
2802// Gets a built-in track envelope by configuration chunk name, e.g. "<VOLENV".
2803//
2804
2805 TrackEnvelope* (*GetTrackEnvelopeByChunkName)(MediaTrack* tr, const char* cfgchunkname);
2806#endif
2807
2808#if defined(REAPERAPI_WANT_GetTrackEnvelopeByName) || !defined(REAPERAPI_MINIMAL)
2809REAPERAPI_DEF //==============================================
2810// GetTrackEnvelopeByName
2811
2812 TrackEnvelope* (*GetTrackEnvelopeByName)(MediaTrack* track, const char* envname);
2813#endif
2814
2815#if defined(REAPERAPI_WANT_GetTrackGUID) || !defined(REAPERAPI_MINIMAL)
2816REAPERAPI_DEF //==============================================
2817// GetTrackGUID
2818
2819 GUID* (*GetTrackGUID)(MediaTrack* tr);
2820#endif
2821
2822#if defined(REAPERAPI_WANT_GetTrackInfo) || !defined(REAPERAPI_MINIMAL)
2823REAPERAPI_DEF //==============================================
2824// GetTrackInfo
2825// gets track info (returns name).
2826// track index, -1=master, 0..n, or cast a MediaTrack* to int
2827// if flags is non-NULL, will be set to:
2828// &1=folder
2829// &2=selected
2830// &4=has fx enabled
2831// &8=muted
2832// &16=soloed
2833// &32=SIP'd (with &16)
2834// &64=rec armed
2835// &128=rec monitoring on
2836// &256=rec monitoring auto
2837// &512=hide from TCP
2838// &1024=hide from MCP
2839
2840 const char* (*GetTrackInfo)(INT_PTR track, int* flags);
2841#endif
2842
2843#if defined(REAPERAPI_WANT_GetTrackMediaItem) || !defined(REAPERAPI_MINIMAL)
2844REAPERAPI_DEF //==============================================
2845// GetTrackMediaItem
2846
2847 MediaItem* (*GetTrackMediaItem)(MediaTrack* tr, int itemidx);
2848#endif
2849
2850#if defined(REAPERAPI_WANT_GetTrackMIDILyrics) || !defined(REAPERAPI_MINIMAL)
2851REAPERAPI_DEF //==============================================
2852// GetTrackMIDILyrics
2853// Get all MIDI lyrics on the track. Lyrics will be returned as one string with tabs between each word. flag&1: double tabs at the end of each measure and triple tabs when skipping measures, flag&2: each lyric is preceded by its beat position in the project (example with flag=2: "1.1.2\tLyric for measure 1 beat 2\t.1.1\tLyric for measure 2 beat 1 "). See SetTrackMIDILyrics
2854
2855 bool (*GetTrackMIDILyrics)(MediaTrack* track, int flag, char* bufWant16384, int* bufWant16384_sz);
2856#endif
2857
2858#if defined(REAPERAPI_WANT_GetTrackMIDINoteName) || !defined(REAPERAPI_MINIMAL)
2859REAPERAPI_DEF //==============================================
2860// GetTrackMIDINoteName
2861// see GetTrackMIDINoteNameEx
2862
2863 const char* (*GetTrackMIDINoteName)(int track, int pitch, int chan);
2864#endif
2865
2866#if defined(REAPERAPI_WANT_GetTrackMIDINoteNameEx) || !defined(REAPERAPI_MINIMAL)
2867REAPERAPI_DEF //==============================================
2868// GetTrackMIDINoteNameEx
2869// Get note name. pitch 128 for CC0 name, 129 for CC1 name, etc. See SetTrackMIDINoteNameEx
2870
2871 const char* (*GetTrackMIDINoteNameEx)(ReaProject* proj, MediaTrack* track, int pitch, int chan);
2872#endif
2873
2874#if defined(REAPERAPI_WANT_GetTrackMIDINoteRange) || !defined(REAPERAPI_MINIMAL)
2875REAPERAPI_DEF //==============================================
2876// GetTrackMIDINoteRange
2877
2878 void (*GetTrackMIDINoteRange)(ReaProject* proj, MediaTrack* track, int* note_loOut, int* note_hiOut);
2879#endif
2880
2881#if defined(REAPERAPI_WANT_GetTrackName) || !defined(REAPERAPI_MINIMAL)
2882REAPERAPI_DEF //==============================================
2883// GetTrackName
2884// Returns "MASTER" for master track, "Track N" if track has no name.
2885
2886 bool (*GetTrackName)(MediaTrack* track, char* buf, int buf_sz);
2887#endif
2888
2889#if defined(REAPERAPI_WANT_GetTrackNumMediaItems) || !defined(REAPERAPI_MINIMAL)
2890REAPERAPI_DEF //==============================================
2891// GetTrackNumMediaItems
2892
2893 int (*GetTrackNumMediaItems)(MediaTrack* tr);
2894#endif
2895
2896#if defined(REAPERAPI_WANT_GetTrackNumSends) || !defined(REAPERAPI_MINIMAL)
2897REAPERAPI_DEF //==============================================
2898// GetTrackNumSends
2899// returns number of sends/receives/hardware outputs - category is <0 for receives, 0=sends, >0 for hardware outputs
2900
2901 int (*GetTrackNumSends)(MediaTrack* tr, int category);
2902#endif
2903
2904#if defined(REAPERAPI_WANT_GetTrackReceiveName) || !defined(REAPERAPI_MINIMAL)
2905REAPERAPI_DEF //==============================================
2906// GetTrackReceiveName
2907// See GetTrackSendName.
2908
2909 bool (*GetTrackReceiveName)(MediaTrack* track, int recv_index, char* buf, int buf_sz);
2910#endif
2911
2912#if defined(REAPERAPI_WANT_GetTrackReceiveUIMute) || !defined(REAPERAPI_MINIMAL)
2913REAPERAPI_DEF //==============================================
2914// GetTrackReceiveUIMute
2915// See GetTrackSendUIMute.
2916
2917 bool (*GetTrackReceiveUIMute)(MediaTrack* track, int recv_index, bool* muteOut);
2918#endif
2919
2920#if defined(REAPERAPI_WANT_GetTrackReceiveUIVolPan) || !defined(REAPERAPI_MINIMAL)
2921REAPERAPI_DEF //==============================================
2922// GetTrackReceiveUIVolPan
2923// See GetTrackSendUIVolPan.
2924
2925 bool (*GetTrackReceiveUIVolPan)(MediaTrack* track, int recv_index, double* volumeOut, double* panOut);
2926#endif
2927
2928#if defined(REAPERAPI_WANT_GetTrackSendInfo_Value) || !defined(REAPERAPI_MINIMAL)
2929REAPERAPI_DEF //==============================================
2930// GetTrackSendInfo_Value
2931// Get send/receive/hardware output numerical-value attributes.
2932// category is <0 for receives, 0=sends, >0 for hardware outputs
2933// parameter names:
2934// B_MUTE : returns bool *
2935// B_PHASE : returns bool *, true to flip phase
2936// B_MONO : returns bool *
2937// D_VOL : returns double *, 1.0 = +0dB etc
2938// D_PAN : returns double *, -1..+1
2939// D_PANLAW : returns double *,1.0=+0.0db, 0.5=-6dB, -1.0 = projdef etc
2940// I_SENDMODE : returns int *, 0=post-fader, 1=pre-fx, 2=post-fx (deprecated), 3=post-fx
2941// I_AUTOMODE : returns int * : automation mode (-1=use track automode, 0=trim/off, 1=read, 2=touch, 3=write, 4=latch)
2942// I_SRCCHAN : returns int *, index,&1024=mono, -1 for none
2943// I_DSTCHAN : returns int *, index, &1024=mono, otherwise stereo pair, hwout:&512=rearoute
2944// I_MIDIFLAGS : returns int *, low 5 bits=source channel 0=all, 1-16, next 5 bits=dest channel, 0=orig, 1-16=chan
2945// See CreateTrackSend, RemoveTrackSend, GetTrackNumSends.
2946
2947 double (*GetTrackSendInfo_Value)(MediaTrack* tr, int category, int sendidx, const char* parmname);
2948#endif
2949
2950#if defined(REAPERAPI_WANT_GetTrackSendName) || !defined(REAPERAPI_MINIMAL)
2951REAPERAPI_DEF //==============================================
2952// GetTrackSendName
2953// send_idx>=0 for hw ouputs, >=nb_of_hw_ouputs for sends. See GetTrackReceiveName.
2954
2955 bool (*GetTrackSendName)(MediaTrack* track, int send_index, char* buf, int buf_sz);
2956#endif
2957
2958#if defined(REAPERAPI_WANT_GetTrackSendUIMute) || !defined(REAPERAPI_MINIMAL)
2959REAPERAPI_DEF //==============================================
2960// GetTrackSendUIMute
2961// send_idx>=0 for hw ouputs, >=nb_of_hw_ouputs for sends. See GetTrackReceiveUIMute.
2962
2963 bool (*GetTrackSendUIMute)(MediaTrack* track, int send_index, bool* muteOut);
2964#endif
2965
2966#if defined(REAPERAPI_WANT_GetTrackSendUIVolPan) || !defined(REAPERAPI_MINIMAL)
2967REAPERAPI_DEF //==============================================
2968// GetTrackSendUIVolPan
2969// send_idx>=0 for hw ouputs, >=nb_of_hw_ouputs for sends. See GetTrackReceiveUIVolPan.
2970
2971 bool (*GetTrackSendUIVolPan)(MediaTrack* track, int send_index, double* volumeOut, double* panOut);
2972#endif
2973
2974#if defined(REAPERAPI_WANT_GetTrackState) || !defined(REAPERAPI_MINIMAL)
2975REAPERAPI_DEF //==============================================
2976// GetTrackState
2977// Gets track state, returns track name.
2978// flags will be set to:
2979// &1=folder
2980// &2=selected
2981// &4=has fx enabled
2982// &8=muted
2983// &16=soloed
2984// &32=SIP'd (with &16)
2985// &64=rec armed
2986// &128=rec monitoring on
2987// &256=rec monitoring auto
2988// &512=hide from TCP
2989// &1024=hide from MCP
2990
2991 const char* (*GetTrackState)(MediaTrack* track, int* flagsOut);
2992#endif
2993
2994#if defined(REAPERAPI_WANT_GetTrackStateChunk) || !defined(REAPERAPI_MINIMAL)
2995REAPERAPI_DEF //==============================================
2996// GetTrackStateChunk
2997// Gets the RPPXML state of a track, returns true if successful. Undo flag is a performance/caching hint.
2998
2999 bool (*GetTrackStateChunk)(MediaTrack* track, char* strNeedBig, int strNeedBig_sz, bool isundoOptional);
3000#endif
3001
3002#if defined(REAPERAPI_WANT_GetTrackUIMute) || !defined(REAPERAPI_MINIMAL)
3003REAPERAPI_DEF //==============================================
3004// GetTrackUIMute
3005
3006 bool (*GetTrackUIMute)(MediaTrack* track, bool* muteOut);
3007#endif
3008
3009#if defined(REAPERAPI_WANT_GetTrackUIPan) || !defined(REAPERAPI_MINIMAL)
3010REAPERAPI_DEF //==============================================
3011// GetTrackUIPan
3012
3013 bool (*GetTrackUIPan)(MediaTrack* track, double* pan1Out, double* pan2Out, int* panmodeOut);
3014#endif
3015
3016#if defined(REAPERAPI_WANT_GetTrackUIVolPan) || !defined(REAPERAPI_MINIMAL)
3017REAPERAPI_DEF //==============================================
3018// GetTrackUIVolPan
3019
3020 bool (*GetTrackUIVolPan)(MediaTrack* track, double* volumeOut, double* panOut);
3021#endif
3022
3023#if defined(REAPERAPI_WANT_GetUnderrunTime) || !defined(REAPERAPI_MINIMAL)
3024REAPERAPI_DEF //==============================================
3025// GetUnderrunTime
3026// retrieves the last timestamps of audio xrun (yellow-flash, if available), media xrun (red-flash), and the current time stamp (all milliseconds)
3027
3028 void (*GetUnderrunTime)(unsigned int* audio_xrunOutOptional, unsigned int* media_xrunOutOptional, unsigned int* curtimeOutOptional);
3029#endif
3030
3031#if defined(REAPERAPI_WANT_GetUserFileNameForRead) || !defined(REAPERAPI_MINIMAL)
3032REAPERAPI_DEF //==============================================
3033// GetUserFileNameForRead
3034// returns true if the user selected a valid file, false if the user canceled the dialog
3035
3036 bool (*GetUserFileNameForRead)(char* filenameNeed4096, const char* title, const char* defext);
3037#endif
3038
3039#if defined(REAPERAPI_WANT_GetUserInputs) || !defined(REAPERAPI_MINIMAL)
3040REAPERAPI_DEF //==============================================
3041// GetUserInputs
3042// Get values from the user.
3043// If a caption begins with *, for example "*password", the edit field will not display the input text.
3044// Maximum fields is 16. Values are returned as a comma-separated string. Returns false if the user canceled the dialog. To increase text field width, add an extra caption field, and specify extrawidth=xyz
3045
3046 bool (*GetUserInputs)(const char* title, int num_inputs, const char* captions_csv, char* retvals_csv, int retvals_csv_sz);
3047#endif
3048
3049#if defined(REAPERAPI_WANT_GoToMarker) || !defined(REAPERAPI_MINIMAL)
3050REAPERAPI_DEF //==============================================
3051// GoToMarker
3052// 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.
3053
3054 void (*GoToMarker)(ReaProject* proj, int marker_index, bool use_timeline_order);
3055#endif
3056
3057#if defined(REAPERAPI_WANT_GoToRegion) || !defined(REAPERAPI_MINIMAL)
3058REAPERAPI_DEF //==============================================
3059// GoToRegion
3060// 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.
3061
3062 void (*GoToRegion)(ReaProject* proj, int region_index, bool use_timeline_order);
3063#endif
3064
3065#if defined(REAPERAPI_WANT_GR_SelectColor) || !defined(REAPERAPI_MINIMAL)
3066REAPERAPI_DEF //==============================================
3067// GR_SelectColor
3068// Runs the system color chooser dialog. Returns 0 if the user cancels the dialog.
3069
3070 int (*GR_SelectColor)(HWND hwnd, int* colorOut);
3071#endif
3072
3073#if defined(REAPERAPI_WANT_GSC_mainwnd) || !defined(REAPERAPI_MINIMAL)
3074REAPERAPI_DEF //==============================================
3075// GSC_mainwnd
3076// this is just like win32 GetSysColor() but can have overrides.
3077
3078 int (*GSC_mainwnd)(int t);
3079#endif
3080
3081#if defined(REAPERAPI_WANT_guidToString) || !defined(REAPERAPI_MINIMAL)
3082REAPERAPI_DEF //==============================================
3083// guidToString
3084// dest should be at least 64 chars long to be safe
3085
3086 void (*guidToString)(const GUID* g, char* destNeed64);
3087#endif
3088
3089#if defined(REAPERAPI_WANT_HasExtState) || !defined(REAPERAPI_MINIMAL)
3090REAPERAPI_DEF //==============================================
3091// HasExtState
3092// Returns true if there exists an extended state value for a specific section and key. See SetExtState, GetExtState, DeleteExtState.
3093
3094 bool (*HasExtState)(const char* section, const char* key);
3095#endif
3096
3097#if defined(REAPERAPI_WANT_HasTrackMIDIPrograms) || !defined(REAPERAPI_MINIMAL)
3098REAPERAPI_DEF //==============================================
3099// HasTrackMIDIPrograms
3100// returns name of track plugin that is supplying MIDI programs,or NULL if there is none
3101
3102 const char* (*HasTrackMIDIPrograms)(int track);
3103#endif
3104
3105#if defined(REAPERAPI_WANT_HasTrackMIDIProgramsEx) || !defined(REAPERAPI_MINIMAL)
3106REAPERAPI_DEF //==============================================
3107// HasTrackMIDIProgramsEx
3108// returns name of track plugin that is supplying MIDI programs,or NULL if there is none
3109
3110 const char* (*HasTrackMIDIProgramsEx)(ReaProject* proj, MediaTrack* track);
3111#endif
3112
3113#if defined(REAPERAPI_WANT_Help_Set) || !defined(REAPERAPI_MINIMAL)
3114REAPERAPI_DEF //==============================================
3115// Help_Set
3116
3117 void (*Help_Set)(const char* helpstring, bool is_temporary_help);
3118#endif
3119
3120#if defined(REAPERAPI_WANT_HiresPeaksFromSource) || !defined(REAPERAPI_MINIMAL)
3121REAPERAPI_DEF //==============================================
3122// HiresPeaksFromSource
3123
3124 void (*HiresPeaksFromSource)(PCM_source* src, PCM_source_peaktransfer_t* block);
3125#endif
3126
3127#if defined(REAPERAPI_WANT_image_resolve_fn) || !defined(REAPERAPI_MINIMAL)
3128REAPERAPI_DEF //==============================================
3129// image_resolve_fn
3130
3131 void (*image_resolve_fn)(const char* in, char* out, int out_sz);
3132#endif
3133
3134#if defined(REAPERAPI_WANT_InsertAutomationItem) || !defined(REAPERAPI_MINIMAL)
3135REAPERAPI_DEF //==============================================
3136// InsertAutomationItem
3137// Insert a new automation item. pool_id < 0 collects existing envelope points into the automation item; otherwise, the automation item will be a new instance of an existing pool. Returns the index of the item, suitable for passing to other automation item API functions. See GetSetAutomationItemInfo.
3138
3139 int (*InsertAutomationItem)(TrackEnvelope* env, int pool_id, double position, double length);
3140#endif
3141
3142#if defined(REAPERAPI_WANT_InsertEnvelopePoint) || !defined(REAPERAPI_MINIMAL)
3143REAPERAPI_DEF //==============================================
3144// InsertEnvelopePoint
3145// Insert an envelope point. If setting multiple points at once, set noSort=true, and call Envelope_SortPoints when done. See GetEnvelopePoint, SetEnvelopePoint, GetEnvelopeScalingMode.
3146
3147 bool (*InsertEnvelopePoint)(TrackEnvelope* envelope, double time, double value, int shape, double tension, bool selected, bool* noSortInOptional);
3148#endif
3149
3150#if defined(REAPERAPI_WANT_InsertEnvelopePointEx) || !defined(REAPERAPI_MINIMAL)
3151REAPERAPI_DEF //==============================================
3152// InsertEnvelopePointEx
3153// Insert an envelope point. If setting multiple points at once, set noSort=true, and call Envelope_SortPoints when done. autoitem_idx==-1 for the underlying envelope, 0 for the first automation item on the envelope, etc. See GetEnvelopePoint, SetEnvelopePoint, GetEnvelopeScalingMode.
3154
3155 bool (*InsertEnvelopePointEx)(TrackEnvelope* envelope, int autoitem_idx, double time, double value, int shape, double tension, bool selected, bool* noSortInOptional);
3156#endif
3157
3158#if defined(REAPERAPI_WANT_InsertMedia) || !defined(REAPERAPI_MINIMAL)
3159REAPERAPI_DEF //==============================================
3160// InsertMedia
3161// 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.
3162
3163 int (*InsertMedia)(const char* file, int mode);
3164#endif
3165
3166#if defined(REAPERAPI_WANT_InsertMediaSection) || !defined(REAPERAPI_MINIMAL)
3167REAPERAPI_DEF //==============================================
3168// InsertMediaSection
3169
3170 int (*InsertMediaSection)(const char* file, int mode, double startpct, double endpct, double pitchshift);
3171#endif
3172
3173#if defined(REAPERAPI_WANT_InsertTrackAtIndex) || !defined(REAPERAPI_MINIMAL)
3174REAPERAPI_DEF //==============================================
3175// InsertTrackAtIndex
3176// 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
3177
3178 void (*InsertTrackAtIndex)(int idx, bool wantDefaults);
3179#endif
3180
3181#if defined(REAPERAPI_WANT_IsInRealTimeAudio) || !defined(REAPERAPI_MINIMAL)
3182REAPERAPI_DEF //==============================================
3183// IsInRealTimeAudio
3184// are we in a realtime audio thread (between OnAudioBuffer calls,not in some worker/anticipative FX thread)? threadsafe
3185
3186 int (*IsInRealTimeAudio)();
3187#endif
3188
3189#if defined(REAPERAPI_WANT_IsItemTakeActiveForPlayback) || !defined(REAPERAPI_MINIMAL)
3190REAPERAPI_DEF //==============================================
3191// IsItemTakeActiveForPlayback
3192// get whether a take will be played (active take, unmuted, etc)
3193
3194 bool (*IsItemTakeActiveForPlayback)(MediaItem* item, MediaItem_Take* take);
3195#endif
3196
3197#if defined(REAPERAPI_WANT_IsMediaExtension) || !defined(REAPERAPI_MINIMAL)
3198REAPERAPI_DEF //==============================================
3199// IsMediaExtension
3200// Tests a file extension (i.e. "wav" or "mid") to see if it's a media extension.
3201// If wantOthers is set, then "RPP", "TXT" and other project-type formats will also pass.
3202
3203 bool (*IsMediaExtension)(const char* ext, bool wantOthers);
3204#endif
3205
3206#if defined(REAPERAPI_WANT_IsMediaItemSelected) || !defined(REAPERAPI_MINIMAL)
3207REAPERAPI_DEF //==============================================
3208// IsMediaItemSelected
3209
3210 bool (*IsMediaItemSelected)(MediaItem* item);
3211#endif
3212
3213#if defined(REAPERAPI_WANT_IsProjectDirty) || !defined(REAPERAPI_MINIMAL)
3214REAPERAPI_DEF //==============================================
3215// IsProjectDirty
3216// Is the project dirty (needing save)? Always returns 0 if 'undo/prompt to save' is disabled in preferences.
3217
3218 int (*IsProjectDirty)(ReaProject* proj);
3219#endif
3220
3221#if defined(REAPERAPI_WANT_IsREAPER) || !defined(REAPERAPI_MINIMAL)
3222REAPERAPI_DEF //==============================================
3223// IsREAPER
3224// Returns true if dealing with REAPER, returns false for ReaMote, etc
3225
3226 bool (*IsREAPER)();
3227#endif
3228
3229#if defined(REAPERAPI_WANT_IsTrackSelected) || !defined(REAPERAPI_MINIMAL)
3230REAPERAPI_DEF //==============================================
3231// IsTrackSelected
3232
3233 bool (*IsTrackSelected)(MediaTrack* track);
3234#endif
3235
3236#if defined(REAPERAPI_WANT_IsTrackVisible) || !defined(REAPERAPI_MINIMAL)
3237REAPERAPI_DEF //==============================================
3238// IsTrackVisible
3239// 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.
3240
3241 bool (*IsTrackVisible)(MediaTrack* track, bool mixer);
3242#endif
3243
3244#if defined(REAPERAPI_WANT_joystick_create) || !defined(REAPERAPI_MINIMAL)
3245REAPERAPI_DEF //==============================================
3246// joystick_create
3247// creates a joystick device
3248
3249 joystick_device* (*joystick_create)(const GUID* guid);
3250#endif
3251
3252#if defined(REAPERAPI_WANT_joystick_destroy) || !defined(REAPERAPI_MINIMAL)
3253REAPERAPI_DEF //==============================================
3254// joystick_destroy
3255// destroys a joystick device
3256
3257 void (*joystick_destroy)(joystick_device* device);
3258#endif
3259
3260#if defined(REAPERAPI_WANT_joystick_enum) || !defined(REAPERAPI_MINIMAL)
3261REAPERAPI_DEF //==============================================
3262// joystick_enum
3263// enumerates installed devices, returns GUID as a string
3264
3265 const char* (*joystick_enum)(int index, const char** namestrOutOptional);
3266#endif
3267
3268#if defined(REAPERAPI_WANT_joystick_getaxis) || !defined(REAPERAPI_MINIMAL)
3269REAPERAPI_DEF //==============================================
3270// joystick_getaxis
3271// returns axis value (-1..1)
3272
3273 double (*joystick_getaxis)(joystick_device* dev, int axis);
3274#endif
3275
3276#if defined(REAPERAPI_WANT_joystick_getbuttonmask) || !defined(REAPERAPI_MINIMAL)
3277REAPERAPI_DEF //==============================================
3278// joystick_getbuttonmask
3279// returns button pressed mask, 1=first button, 2=second...
3280
3281 unsigned int (*joystick_getbuttonmask)(joystick_device* dev);
3282#endif
3283
3284#if defined(REAPERAPI_WANT_joystick_getinfo) || !defined(REAPERAPI_MINIMAL)
3285REAPERAPI_DEF //==============================================
3286// joystick_getinfo
3287// returns button count
3288
3289 int (*joystick_getinfo)(joystick_device* dev, int* axesOutOptional, int* povsOutOptional);
3290#endif
3291
3292#if defined(REAPERAPI_WANT_joystick_getpov) || !defined(REAPERAPI_MINIMAL)
3293REAPERAPI_DEF //==============================================
3294// joystick_getpov
3295// returns POV value (usually 0..655.35, or 655.35 on error)
3296
3297 double (*joystick_getpov)(joystick_device* dev, int pov);
3298#endif
3299
3300#if defined(REAPERAPI_WANT_joystick_update) || !defined(REAPERAPI_MINIMAL)
3301REAPERAPI_DEF //==============================================
3302// joystick_update
3303// Updates joystick state from hardware, returns true if successful (joystick_get* will not be valid until joystick_update() is called successfully)
3304
3305 bool (*joystick_update)(joystick_device* dev);
3306#endif
3307
3308#if defined(REAPERAPI_WANT_kbd_enumerateActions) || !defined(REAPERAPI_MINIMAL)
3309REAPERAPI_DEF //==============================================
3310// kbd_enumerateActions
3311
3312 int (*kbd_enumerateActions)(KbdSectionInfo* section, int idx, const char** nameOut);
3313#endif
3314
3315#if defined(REAPERAPI_WANT_kbd_formatKeyName) || !defined(REAPERAPI_MINIMAL)
3316REAPERAPI_DEF //==============================================
3317// kbd_formatKeyName
3318
3319 void (*kbd_formatKeyName)(ACCEL* ac, char* s);
3320#endif
3321
3322#if defined(REAPERAPI_WANT_kbd_getCommandName) || !defined(REAPERAPI_MINIMAL)
3323REAPERAPI_DEF //==============================================
3324// kbd_getCommandName
3325// Get the string of a key assigned to command "cmd" in a section.
3326// This function is poorly named as it doesn't return the command's name, see kbd_getTextFromCmd.
3327
3328 void (*kbd_getCommandName)(int cmd, char* s, KbdSectionInfo* section);
3329#endif
3330
3331#if defined(REAPERAPI_WANT_kbd_getTextFromCmd) || !defined(REAPERAPI_MINIMAL)
3332REAPERAPI_DEF //==============================================
3333// kbd_getTextFromCmd
3334
3335 const char* (*kbd_getTextFromCmd)(DWORD cmd, KbdSectionInfo* section);
3336#endif
3337
3338#if defined(REAPERAPI_WANT_KBD_OnMainActionEx) || !defined(REAPERAPI_MINIMAL)
3339REAPERAPI_DEF //==============================================
3340// KBD_OnMainActionEx
3341// val/valhw are used for midi stuff.
3342// val=[0..127] and valhw=-1 (midi CC),
3343// valhw >=0 (midi pitch (valhw | val<<7)),
3344// relmode absolute (0) or 1/2/3 for relative adjust modes
3345
3346 int (*KBD_OnMainActionEx)(int cmd, int val, int valhw, int relmode, HWND hwnd, ReaProject* proj);
3347#endif
3348
3349#if defined(REAPERAPI_WANT_kbd_OnMidiEvent) || !defined(REAPERAPI_MINIMAL)
3350REAPERAPI_DEF //==============================================
3351// kbd_OnMidiEvent
3352// can be called from anywhere (threadsafe)
3353
3354 void (*kbd_OnMidiEvent)(MIDI_event_t* evt, int dev_index);
3355#endif
3356
3357#if defined(REAPERAPI_WANT_kbd_OnMidiList) || !defined(REAPERAPI_MINIMAL)
3358REAPERAPI_DEF //==============================================
3359// kbd_OnMidiList
3360// can be called from anywhere (threadsafe)
3361
3362 void (*kbd_OnMidiList)(MIDI_eventlist* list, int dev_index);
3363#endif
3364
3365#if defined(REAPERAPI_WANT_kbd_ProcessActionsMenu) || !defined(REAPERAPI_MINIMAL)
3366REAPERAPI_DEF //==============================================
3367// kbd_ProcessActionsMenu
3368
3369 void (*kbd_ProcessActionsMenu)(HMENU menu, KbdSectionInfo* section);
3370#endif
3371
3372#if defined(REAPERAPI_WANT_kbd_processMidiEventActionEx) || !defined(REAPERAPI_MINIMAL)
3373REAPERAPI_DEF //==============================================
3374// kbd_processMidiEventActionEx
3375
3376 bool (*kbd_processMidiEventActionEx)(MIDI_event_t* evt, KbdSectionInfo* section, HWND hwndCtx);
3377#endif
3378
3379#if defined(REAPERAPI_WANT_kbd_reprocessMenu) || !defined(REAPERAPI_MINIMAL)
3380REAPERAPI_DEF //==============================================
3381// kbd_reprocessMenu
3382// Reprocess a menu recursively, setting key assignments to what their command IDs are mapped to.
3383
3384 void (*kbd_reprocessMenu)(HMENU menu, KbdSectionInfo* section);
3385#endif
3386
3387#if defined(REAPERAPI_WANT_kbd_RunCommandThroughHooks) || !defined(REAPERAPI_MINIMAL)
3388REAPERAPI_DEF //==============================================
3389// kbd_RunCommandThroughHooks
3390// actioncommandID may get modified
3391
3392 bool (*kbd_RunCommandThroughHooks)(KbdSectionInfo* section, int* actionCommandID, int* val, int* valhw, int* relmode, HWND hwnd);
3393#endif
3394
3395#if defined(REAPERAPI_WANT_kbd_translateAccelerator) || !defined(REAPERAPI_MINIMAL)
3396REAPERAPI_DEF //==============================================
3397// kbd_translateAccelerator
3398// Pass in the HWND to receive commands, a MSG of a key command, and a valid section,
3399// and kbd_translateAccelerator() will process it looking for any keys bound to it, and send the messages off.
3400// Returns 1 if processed, 0 if no key binding found.
3401
3402 int (*kbd_translateAccelerator)(HWND hwnd, MSG* msg, KbdSectionInfo* section);
3403#endif
3404
3405#if defined(REAPERAPI_WANT_kbd_translateMouse) || !defined(REAPERAPI_MINIMAL)
3406REAPERAPI_DEF //==============================================
3407// kbd_translateMouse
3408
3409 bool (*kbd_translateMouse)(void* winmsg, unsigned char* midimsg);
3410#endif
3411
3412#ifndef REAPERAPI_NO_LICE
3413#if defined(REAPERAPI_WANT_LICE__Destroy) || !defined(REAPERAPI_MINIMAL)
3414REAPERAPI_DEF //==============================================
3415// LICE__Destroy
3416
3417 void (*LICE__Destroy)(LICE_IBitmap* bm);
3418#endif
3419
3420#if defined(REAPERAPI_WANT_LICE__DestroyFont) || !defined(REAPERAPI_MINIMAL)
3421REAPERAPI_DEF //==============================================
3422// LICE__DestroyFont
3423
3424 void (*LICE__DestroyFont)(LICE_IFont* font);
3425#endif
3426
3427#if defined(REAPERAPI_WANT_LICE__DrawText) || !defined(REAPERAPI_MINIMAL)
3428REAPERAPI_DEF //==============================================
3429// LICE__DrawText
3430
3431 int (*LICE__DrawText)(LICE_IFont* font, LICE_IBitmap* bm, const char* str, int strcnt, RECT* rect, UINT dtFlags);
3432#endif
3433
3434#if defined(REAPERAPI_WANT_LICE__GetBits) || !defined(REAPERAPI_MINIMAL)
3435REAPERAPI_DEF //==============================================
3436// LICE__GetBits
3437
3438 void* (*LICE__GetBits)(LICE_IBitmap* bm);
3439#endif
3440
3441#if defined(REAPERAPI_WANT_LICE__GetDC) || !defined(REAPERAPI_MINIMAL)
3442REAPERAPI_DEF //==============================================
3443// LICE__GetDC
3444
3445 HDC (*LICE__GetDC)(LICE_IBitmap* bm);
3446#endif
3447
3448#if defined(REAPERAPI_WANT_LICE__GetHeight) || !defined(REAPERAPI_MINIMAL)
3449REAPERAPI_DEF //==============================================
3450// LICE__GetHeight
3451
3452 int (*LICE__GetHeight)(LICE_IBitmap* bm);
3453#endif
3454
3455#if defined(REAPERAPI_WANT_LICE__GetRowSpan) || !defined(REAPERAPI_MINIMAL)
3456REAPERAPI_DEF //==============================================
3457// LICE__GetRowSpan
3458
3459 int (*LICE__GetRowSpan)(LICE_IBitmap* bm);
3460#endif
3461
3462#if defined(REAPERAPI_WANT_LICE__GetWidth) || !defined(REAPERAPI_MINIMAL)
3463REAPERAPI_DEF //==============================================
3464// LICE__GetWidth
3465
3466 int (*LICE__GetWidth)(LICE_IBitmap* bm);
3467#endif
3468
3469#if defined(REAPERAPI_WANT_LICE__IsFlipped) || !defined(REAPERAPI_MINIMAL)
3470REAPERAPI_DEF //==============================================
3471// LICE__IsFlipped
3472
3473 bool (*LICE__IsFlipped)(LICE_IBitmap* bm);
3474#endif
3475
3476#if defined(REAPERAPI_WANT_LICE__resize) || !defined(REAPERAPI_MINIMAL)
3477REAPERAPI_DEF //==============================================
3478// LICE__resize
3479
3480 bool (*LICE__resize)(LICE_IBitmap* bm, int w, int h);
3481#endif
3482
3483#if defined(REAPERAPI_WANT_LICE__SetBkColor) || !defined(REAPERAPI_MINIMAL)
3484REAPERAPI_DEF //==============================================
3485// LICE__SetBkColor
3486
3487 LICE_pixel (*LICE__SetBkColor)(LICE_IFont* font, LICE_pixel color);
3488#endif
3489
3490#if defined(REAPERAPI_WANT_LICE__SetFromHFont) || !defined(REAPERAPI_MINIMAL)
3491REAPERAPI_DEF //==============================================
3492// LICE__SetFromHFont
3493// font must REMAIN valid,unless LICE_FONT_FLAG_PRECALCALL is set
3494
3495 void (*LICE__SetFromHFont)(LICE_IFont* font, HFONT hfont, int flags);
3496#endif
3497
3498#if defined(REAPERAPI_WANT_LICE__SetTextColor) || !defined(REAPERAPI_MINIMAL)
3499REAPERAPI_DEF //==============================================
3500// LICE__SetTextColor
3501
3502 LICE_pixel (*LICE__SetTextColor)(LICE_IFont* font, LICE_pixel color);
3503#endif
3504
3505#if defined(REAPERAPI_WANT_LICE__SetTextCombineMode) || !defined(REAPERAPI_MINIMAL)
3506REAPERAPI_DEF //==============================================
3507// LICE__SetTextCombineMode
3508
3509 void (*LICE__SetTextCombineMode)(LICE_IFont* ifont, int mode, float alpha);
3510#endif
3511
3512#if defined(REAPERAPI_WANT_LICE_Arc) || !defined(REAPERAPI_MINIMAL)
3513REAPERAPI_DEF //==============================================
3514// LICE_Arc
3515
3516 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);
3517#endif
3518
3519#if defined(REAPERAPI_WANT_LICE_Blit) || !defined(REAPERAPI_MINIMAL)
3520REAPERAPI_DEF //==============================================
3521// LICE_Blit
3522
3523 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);
3524#endif
3525
3526#if defined(REAPERAPI_WANT_LICE_Blur) || !defined(REAPERAPI_MINIMAL)
3527REAPERAPI_DEF //==============================================
3528// LICE_Blur
3529
3530 void (*LICE_Blur)(LICE_IBitmap* dest, LICE_IBitmap* src, int dstx, int dsty, int srcx, int srcy, int srcw, int srch);
3531#endif
3532
3533#if defined(REAPERAPI_WANT_LICE_BorderedRect) || !defined(REAPERAPI_MINIMAL)
3534REAPERAPI_DEF //==============================================
3535// LICE_BorderedRect
3536
3537 void (*LICE_BorderedRect)(LICE_IBitmap* dest, int x, int y, int w, int h, LICE_pixel bgcolor, LICE_pixel fgcolor, float alpha, int mode);
3538#endif
3539
3540#if defined(REAPERAPI_WANT_LICE_Circle) || !defined(REAPERAPI_MINIMAL)
3541REAPERAPI_DEF //==============================================
3542// LICE_Circle
3543
3544 void (*LICE_Circle)(LICE_IBitmap* dest, float cx, float cy, float r, LICE_pixel color, float alpha, int mode, bool aa);
3545#endif
3546
3547#if defined(REAPERAPI_WANT_LICE_Clear) || !defined(REAPERAPI_MINIMAL)
3548REAPERAPI_DEF //==============================================
3549// LICE_Clear
3550
3551 void (*LICE_Clear)(LICE_IBitmap* dest, LICE_pixel color);
3552#endif
3553
3554#if defined(REAPERAPI_WANT_LICE_ClearRect) || !defined(REAPERAPI_MINIMAL)
3555REAPERAPI_DEF //==============================================
3556// LICE_ClearRect
3557
3558 void (*LICE_ClearRect)(LICE_IBitmap* dest, int x, int y, int w, int h, LICE_pixel mask, LICE_pixel orbits);
3559#endif
3560
3561#if defined(REAPERAPI_WANT_LICE_ClipLine) || !defined(REAPERAPI_MINIMAL)
3562REAPERAPI_DEF //==============================================
3563// LICE_ClipLine
3564// Returns false if the line is entirely offscreen.
3565
3566 bool (*LICE_ClipLine)(int* pX1Out, int* pY1Out, int* pX2Out, int* pY2Out, int xLo, int yLo, int xHi, int yHi);
3567#endif
3568
3569#if defined(REAPERAPI_WANT_LICE_Copy) || !defined(REAPERAPI_MINIMAL)
3570REAPERAPI_DEF //==============================================
3571// LICE_Copy
3572
3573 void (*LICE_Copy)(LICE_IBitmap* dest, LICE_IBitmap* src);
3574#endif
3575
3576#if defined(REAPERAPI_WANT_LICE_CreateBitmap) || !defined(REAPERAPI_MINIMAL)
3577REAPERAPI_DEF //==============================================
3578// LICE_CreateBitmap
3579// create a new bitmap. this is like calling new LICE_MemBitmap (mode=0) or new LICE_SysBitmap (mode=1).
3580
3581 LICE_IBitmap* (*LICE_CreateBitmap)(int mode, int w, int h);
3582#endif
3583
3584#if defined(REAPERAPI_WANT_LICE_CreateFont) || !defined(REAPERAPI_MINIMAL)
3585REAPERAPI_DEF //==============================================
3586// LICE_CreateFont
3587
3588 LICE_IFont* (*LICE_CreateFont)();
3589#endif
3590
3591#if defined(REAPERAPI_WANT_LICE_DrawChar) || !defined(REAPERAPI_MINIMAL)
3592REAPERAPI_DEF //==============================================
3593// LICE_DrawChar
3594
3595 void (*LICE_DrawChar)(LICE_IBitmap* bm, int x, int y, char c, LICE_pixel color, float alpha, int mode);
3596#endif
3597
3598#if defined(REAPERAPI_WANT_LICE_DrawGlyph) || !defined(REAPERAPI_MINIMAL)
3599REAPERAPI_DEF //==============================================
3600// LICE_DrawGlyph
3601
3602 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);
3603#endif
3604
3605#if defined(REAPERAPI_WANT_LICE_DrawRect) || !defined(REAPERAPI_MINIMAL)
3606REAPERAPI_DEF //==============================================
3607// LICE_DrawRect
3608
3609 void (*LICE_DrawRect)(LICE_IBitmap* dest, int x, int y, int w, int h, LICE_pixel color, float alpha, int mode);
3610#endif
3611
3612#if defined(REAPERAPI_WANT_LICE_DrawText) || !defined(REAPERAPI_MINIMAL)
3613REAPERAPI_DEF //==============================================
3614// LICE_DrawText
3615
3616 void (*LICE_DrawText)(LICE_IBitmap* bm, int x, int y, const char* string, LICE_pixel color, float alpha, int mode);
3617#endif
3618
3619#if defined(REAPERAPI_WANT_LICE_FillCircle) || !defined(REAPERAPI_MINIMAL)
3620REAPERAPI_DEF //==============================================
3621// LICE_FillCircle
3622
3623 void (*LICE_FillCircle)(LICE_IBitmap* dest, float cx, float cy, float r, LICE_pixel color, float alpha, int mode, bool aa);
3624#endif
3625
3626#if defined(REAPERAPI_WANT_LICE_FillConvexPolygon) || !defined(REAPERAPI_MINIMAL)
3627REAPERAPI_DEF //==============================================
3628// LICE_FillConvexPolygon
3629
3630 void (*LICE_FillConvexPolygon)(LICE_IBitmap* dest, int* x, int* y, int npoints, LICE_pixel color, float alpha, int mode);
3631#endif
3632
3633#if defined(REAPERAPI_WANT_LICE_FillRect) || !defined(REAPERAPI_MINIMAL)
3634REAPERAPI_DEF //==============================================
3635// LICE_FillRect
3636
3637 void (*LICE_FillRect)(LICE_IBitmap* dest, int x, int y, int w, int h, LICE_pixel color, float alpha, int mode);
3638#endif
3639
3640#if defined(REAPERAPI_WANT_LICE_FillTrapezoid) || !defined(REAPERAPI_MINIMAL)
3641REAPERAPI_DEF //==============================================
3642// LICE_FillTrapezoid
3643
3644 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);
3645#endif
3646
3647#if defined(REAPERAPI_WANT_LICE_FillTriangle) || !defined(REAPERAPI_MINIMAL)
3648REAPERAPI_DEF //==============================================
3649// LICE_FillTriangle
3650
3651 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);
3652#endif
3653
3654#if defined(REAPERAPI_WANT_LICE_GetPixel) || !defined(REAPERAPI_MINIMAL)
3655REAPERAPI_DEF //==============================================
3656// LICE_GetPixel
3657
3658 LICE_pixel (*LICE_GetPixel)(LICE_IBitmap* bm, int x, int y);
3659#endif
3660
3661#if defined(REAPERAPI_WANT_LICE_GradRect) || !defined(REAPERAPI_MINIMAL)
3662REAPERAPI_DEF //==============================================
3663// LICE_GradRect
3664
3665 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);
3666#endif
3667
3668#if defined(REAPERAPI_WANT_LICE_Line) || !defined(REAPERAPI_MINIMAL)
3669REAPERAPI_DEF //==============================================
3670// LICE_Line
3671
3672 void (*LICE_Line)(LICE_IBitmap* dest, float x1, float y1, float x2, float y2, LICE_pixel color, float alpha, int mode, bool aa);
3673#endif
3674
3675#if defined(REAPERAPI_WANT_LICE_LineInt) || !defined(REAPERAPI_MINIMAL)
3676REAPERAPI_DEF //==============================================
3677// LICE_LineInt
3678
3679 void (*LICE_LineInt)(LICE_IBitmap* dest, int x1, int y1, int x2, int y2, LICE_pixel color, float alpha, int mode, bool aa);
3680#endif
3681
3682#if defined(REAPERAPI_WANT_LICE_LoadPNG) || !defined(REAPERAPI_MINIMAL)
3683REAPERAPI_DEF //==============================================
3684// LICE_LoadPNG
3685
3686 LICE_IBitmap* (*LICE_LoadPNG)(const char* filename, LICE_IBitmap* bmp);
3687#endif
3688
3689#if defined(REAPERAPI_WANT_LICE_LoadPNGFromResource) || !defined(REAPERAPI_MINIMAL)
3690REAPERAPI_DEF //==============================================
3691// LICE_LoadPNGFromResource
3692
3693 LICE_IBitmap* (*LICE_LoadPNGFromResource)(HINSTANCE hInst, const char* resid, LICE_IBitmap* bmp);
3694#endif
3695
3696#if defined(REAPERAPI_WANT_LICE_MeasureText) || !defined(REAPERAPI_MINIMAL)
3697REAPERAPI_DEF //==============================================
3698// LICE_MeasureText
3699
3700 void (*LICE_MeasureText)(const char* string, int* w, int* h);
3701#endif
3702
3703#if defined(REAPERAPI_WANT_LICE_MultiplyAddRect) || !defined(REAPERAPI_MINIMAL)
3704REAPERAPI_DEF //==============================================
3705// LICE_MultiplyAddRect
3706
3707 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);
3708#endif
3709
3710#if defined(REAPERAPI_WANT_LICE_PutPixel) || !defined(REAPERAPI_MINIMAL)
3711REAPERAPI_DEF //==============================================
3712// LICE_PutPixel
3713
3714 void (*LICE_PutPixel)(LICE_IBitmap* bm, int x, int y, LICE_pixel color, float alpha, int mode);
3715#endif
3716
3717#if defined(REAPERAPI_WANT_LICE_RotatedBlit) || !defined(REAPERAPI_MINIMAL)
3718REAPERAPI_DEF //==============================================
3719// LICE_RotatedBlit
3720// these coordinates are offset from the center of the image,in source pixel coordinates
3721
3722 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);
3723#endif
3724
3725#if defined(REAPERAPI_WANT_LICE_RoundRect) || !defined(REAPERAPI_MINIMAL)
3726REAPERAPI_DEF //==============================================
3727// LICE_RoundRect
3728
3729 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);
3730#endif
3731
3732#if defined(REAPERAPI_WANT_LICE_ScaledBlit) || !defined(REAPERAPI_MINIMAL)
3733REAPERAPI_DEF //==============================================
3734// LICE_ScaledBlit
3735
3736 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);
3737#endif
3738
3739#if defined(REAPERAPI_WANT_LICE_SimpleFill) || !defined(REAPERAPI_MINIMAL)
3740REAPERAPI_DEF //==============================================
3741// LICE_SimpleFill
3742
3743 void (*LICE_SimpleFill)(LICE_IBitmap* dest, int x, int y, LICE_pixel newcolor, LICE_pixel comparemask, LICE_pixel keepmask);
3744#endif
3745
3746#endif // !REAPERAPI_NO_LICE
3747#if defined(REAPERAPI_WANT_Loop_OnArrow) || !defined(REAPERAPI_MINIMAL)
3748REAPERAPI_DEF //==============================================
3749// Loop_OnArrow
3750// Move the loop selection left or right. Returns true if snap is enabled.
3751
3752 bool (*Loop_OnArrow)(ReaProject* project, int direction);
3753#endif
3754
3755#if defined(REAPERAPI_WANT_Main_OnCommand) || !defined(REAPERAPI_MINIMAL)
3756REAPERAPI_DEF //==============================================
3757// Main_OnCommand
3758// See Main_OnCommandEx.
3759
3760 void (*Main_OnCommand)(int command, int flag);
3761#endif
3762
3763#if defined(REAPERAPI_WANT_Main_OnCommandEx) || !defined(REAPERAPI_MINIMAL)
3764REAPERAPI_DEF //==============================================
3765// Main_OnCommandEx
3766// Performs an action belonging to the main action section. To perform non-native actions (ReaScripts, custom or extension plugins' actions) safely, see NamedCommandLookup().
3767
3768 void (*Main_OnCommandEx)(int command, int flag, ReaProject* proj);
3769#endif
3770
3771#if defined(REAPERAPI_WANT_Main_openProject) || !defined(REAPERAPI_MINIMAL)
3772REAPERAPI_DEF //==============================================
3773// Main_openProject
3774// opens a project. will prompt the user to save, etc.
3775// if you pass a .RTrackTemplate file then it adds that to the project instead.
3776
3777 void (*Main_openProject)(const char* name);
3778#endif
3779
3780#if defined(REAPERAPI_WANT_Main_SaveProject) || !defined(REAPERAPI_MINIMAL)
3781REAPERAPI_DEF //==============================================
3782// Main_SaveProject
3783// Save the project.
3784
3785 void (*Main_SaveProject)(ReaProject* proj, bool forceSaveAsInOptional);
3786#endif
3787
3788#if defined(REAPERAPI_WANT_Main_UpdateLoopInfo) || !defined(REAPERAPI_MINIMAL)
3789REAPERAPI_DEF //==============================================
3790// Main_UpdateLoopInfo
3791
3792 void (*Main_UpdateLoopInfo)(int ignoremask);
3793#endif
3794
3795#if defined(REAPERAPI_WANT_MarkProjectDirty) || !defined(REAPERAPI_MINIMAL)
3796REAPERAPI_DEF //==============================================
3797// MarkProjectDirty
3798// Marks project as dirty (needing save) if 'undo/prompt to save' is enabled in preferences.
3799
3800 void (*MarkProjectDirty)(ReaProject* proj);
3801#endif
3802
3803#if defined(REAPERAPI_WANT_MarkTrackItemsDirty) || !defined(REAPERAPI_MINIMAL)
3804REAPERAPI_DEF //==============================================
3805// MarkTrackItemsDirty
3806// If track is supplied, item is ignored
3807
3808 void (*MarkTrackItemsDirty)(MediaTrack* track, MediaItem* item);
3809#endif
3810
3811#if defined(REAPERAPI_WANT_Master_GetPlayRate) || !defined(REAPERAPI_MINIMAL)
3812REAPERAPI_DEF //==============================================
3813// Master_GetPlayRate
3814
3815 double (*Master_GetPlayRate)(ReaProject* project);
3816#endif
3817
3818#if defined(REAPERAPI_WANT_Master_GetPlayRateAtTime) || !defined(REAPERAPI_MINIMAL)
3819REAPERAPI_DEF //==============================================
3820// Master_GetPlayRateAtTime
3821
3822 double (*Master_GetPlayRateAtTime)(double time_s, ReaProject* proj);
3823#endif
3824
3825#if defined(REAPERAPI_WANT_Master_GetTempo) || !defined(REAPERAPI_MINIMAL)
3826REAPERAPI_DEF //==============================================
3827// Master_GetTempo
3828
3829 double (*Master_GetTempo)();
3830#endif
3831
3832#if defined(REAPERAPI_WANT_Master_NormalizePlayRate) || !defined(REAPERAPI_MINIMAL)
3833REAPERAPI_DEF //==============================================
3834// Master_NormalizePlayRate
3835// Convert play rate to/from a value between 0 and 1, representing the position on the project playrate slider.
3836
3837 double (*Master_NormalizePlayRate)(double playrate, bool isnormalized);
3838#endif
3839
3840#if defined(REAPERAPI_WANT_Master_NormalizeTempo) || !defined(REAPERAPI_MINIMAL)
3841REAPERAPI_DEF //==============================================
3842// Master_NormalizeTempo
3843// Convert the tempo to/from a value between 0 and 1, representing bpm in the range of 40-296 bpm.
3844
3845 double (*Master_NormalizeTempo)(double bpm, bool isnormalized);
3846#endif
3847
3848#if defined(REAPERAPI_WANT_MB) || !defined(REAPERAPI_MINIMAL)
3849REAPERAPI_DEF //==============================================
3850// MB
3851// 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
3852
3853 int (*MB)(const char* msg, const char* title, int type);
3854#endif
3855
3856#if defined(REAPERAPI_WANT_MediaItemDescendsFromTrack) || !defined(REAPERAPI_MINIMAL)
3857REAPERAPI_DEF //==============================================
3858// MediaItemDescendsFromTrack
3859// Returns 1 if the track holds the item, 2 if the track is a folder containing the track that holds the item, etc.
3860
3861 int (*MediaItemDescendsFromTrack)(MediaItem* item, MediaTrack* track);
3862#endif
3863
3864#if defined(REAPERAPI_WANT_MIDI_CountEvts) || !defined(REAPERAPI_MINIMAL)
3865REAPERAPI_DEF //==============================================
3866// MIDI_CountEvts
3867// Count the number of notes, CC events, and text/sysex events in a given MIDI item.
3868
3869 int (*MIDI_CountEvts)(MediaItem_Take* take, int* notecntOut, int* ccevtcntOut, int* textsyxevtcntOut);
3870#endif
3871
3872#if defined(REAPERAPI_WANT_MIDI_DeleteCC) || !defined(REAPERAPI_MINIMAL)
3873REAPERAPI_DEF //==============================================
3874// MIDI_DeleteCC
3875// Delete a MIDI CC event.
3876
3877 bool (*MIDI_DeleteCC)(MediaItem_Take* take, int ccidx);
3878#endif
3879
3880#if defined(REAPERAPI_WANT_MIDI_DeleteEvt) || !defined(REAPERAPI_MINIMAL)
3881REAPERAPI_DEF //==============================================
3882// MIDI_DeleteEvt
3883// Delete a MIDI event.
3884
3885 bool (*MIDI_DeleteEvt)(MediaItem_Take* take, int evtidx);
3886#endif
3887
3888#if defined(REAPERAPI_WANT_MIDI_DeleteNote) || !defined(REAPERAPI_MINIMAL)
3889REAPERAPI_DEF //==============================================
3890// MIDI_DeleteNote
3891// Delete a MIDI note.
3892
3893 bool (*MIDI_DeleteNote)(MediaItem_Take* take, int noteidx);
3894#endif
3895
3896#if defined(REAPERAPI_WANT_MIDI_DeleteTextSysexEvt) || !defined(REAPERAPI_MINIMAL)
3897REAPERAPI_DEF //==============================================
3898// MIDI_DeleteTextSysexEvt
3899// Delete a MIDI text or sysex event.
3900
3901 bool (*MIDI_DeleteTextSysexEvt)(MediaItem_Take* take, int textsyxevtidx);
3902#endif
3903
3904#if defined(REAPERAPI_WANT_MIDI_EnumSelCC) || !defined(REAPERAPI_MINIMAL)
3905REAPERAPI_DEF //==============================================
3906// MIDI_EnumSelCC
3907// Returns the index of the next selected MIDI CC event after ccidx (-1 if there are no more selected events).
3908
3909 int (*MIDI_EnumSelCC)(MediaItem_Take* take, int ccidx);
3910#endif
3911
3912#if defined(REAPERAPI_WANT_MIDI_EnumSelEvts) || !defined(REAPERAPI_MINIMAL)
3913REAPERAPI_DEF //==============================================
3914// MIDI_EnumSelEvts
3915// Returns the index of the next selected MIDI event after evtidx (-1 if there are no more selected events).
3916
3917 int (*MIDI_EnumSelEvts)(MediaItem_Take* take, int evtidx);
3918#endif
3919
3920#if defined(REAPERAPI_WANT_MIDI_EnumSelNotes) || !defined(REAPERAPI_MINIMAL)
3921REAPERAPI_DEF //==============================================
3922// MIDI_EnumSelNotes
3923// Returns the index of the next selected MIDI note after noteidx (-1 if there are no more selected events).
3924
3925 int (*MIDI_EnumSelNotes)(MediaItem_Take* take, int noteidx);
3926#endif
3927
3928#if defined(REAPERAPI_WANT_MIDI_EnumSelTextSysexEvts) || !defined(REAPERAPI_MINIMAL)
3929REAPERAPI_DEF //==============================================
3930// MIDI_EnumSelTextSysexEvts
3931// Returns the index of the next selected MIDI text/sysex event after textsyxidx (-1 if there are no more selected events).
3932
3933 int (*MIDI_EnumSelTextSysexEvts)(MediaItem_Take* take, int textsyxidx);
3934#endif
3935
3936#if defined(REAPERAPI_WANT_MIDI_eventlist_Create) || !defined(REAPERAPI_MINIMAL)
3937REAPERAPI_DEF //==============================================
3938// MIDI_eventlist_Create
3939// Create a MIDI_eventlist object. The returned object must be deleted with MIDI_eventlist_destroy().
3940
3941 MIDI_eventlist* (*MIDI_eventlist_Create)();
3942#endif
3943
3944#if defined(REAPERAPI_WANT_MIDI_eventlist_Destroy) || !defined(REAPERAPI_MINIMAL)
3945REAPERAPI_DEF //==============================================
3946// MIDI_eventlist_Destroy
3947// Destroy a MIDI_eventlist object that was created using MIDI_eventlist_Create().
3948
3949 void (*MIDI_eventlist_Destroy)(MIDI_eventlist* evtlist);
3950#endif
3951
3952#if defined(REAPERAPI_WANT_MIDI_GetAllEvts) || !defined(REAPERAPI_MINIMAL)
3953REAPERAPI_DEF //==============================================
3954// MIDI_GetAllEvts
3955// Get all MIDI data. MIDI buffer is returned as a list of { int offset, char flag, int msglen, unsigned char msg[] }. offset: MIDI ticks from previous event, flag: &1=selected &2=muted, msglen: byte length of msg (usually 3), msg: the MIDI message. For tick intervals longer than a 32 bit word can represent, zero-length meta events may be placed between valid events. See MIDI_SetAllEvts.
3956
3957 bool (*MIDI_GetAllEvts)(MediaItem_Take* take, char* bufNeedBig, int* bufNeedBig_sz);
3958#endif
3959
3960#if defined(REAPERAPI_WANT_MIDI_GetCC) || !defined(REAPERAPI_MINIMAL)
3961REAPERAPI_DEF //==============================================
3962// MIDI_GetCC
3963// Get MIDI CC event properties.
3964
3965 bool (*MIDI_GetCC)(MediaItem_Take* take, int ccidx, bool* selectedOut, bool* mutedOut, double* ppqposOut, int* chanmsgOut, int* chanOut, int* msg2Out, int* msg3Out);
3966#endif
3967
3968#if defined(REAPERAPI_WANT_MIDI_GetEvt) || !defined(REAPERAPI_MINIMAL)
3969REAPERAPI_DEF //==============================================
3970// MIDI_GetEvt
3971// Get MIDI event properties.
3972
3973 bool (*MIDI_GetEvt)(MediaItem_Take* take, int evtidx, bool* selectedOut, bool* mutedOut, double* ppqposOut, char* msg, int* msg_sz);
3974#endif
3975
3976#if defined(REAPERAPI_WANT_MIDI_GetGrid) || !defined(REAPERAPI_MINIMAL)
3977REAPERAPI_DEF //==============================================
3978// MIDI_GetGrid
3979// 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.
3980
3981 double (*MIDI_GetGrid)(MediaItem_Take* take, double* swingOutOptional, double* noteLenOutOptional);
3982#endif
3983
3984#if defined(REAPERAPI_WANT_MIDI_GetHash) || !defined(REAPERAPI_MINIMAL)
3985REAPERAPI_DEF //==============================================
3986// MIDI_GetHash
3987// 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
3988
3989 bool (*MIDI_GetHash)(MediaItem_Take* take, bool notesonly, char* hash, int hash_sz);
3990#endif
3991
3992#if defined(REAPERAPI_WANT_MIDI_GetNote) || !defined(REAPERAPI_MINIMAL)
3993REAPERAPI_DEF //==============================================
3994// MIDI_GetNote
3995// Get MIDI note properties.
3996
3997 bool (*MIDI_GetNote)(MediaItem_Take* take, int noteidx, bool* selectedOut, bool* mutedOut, double* startppqposOut, double* endppqposOut, int* chanOut, int* pitchOut, int* velOut);
3998#endif
3999
4000#if defined(REAPERAPI_WANT_MIDI_GetPPQPos_EndOfMeasure) || !defined(REAPERAPI_MINIMAL)
4001REAPERAPI_DEF //==============================================
4002// MIDI_GetPPQPos_EndOfMeasure
4003// Returns the MIDI tick (ppq) position corresponding to the end of the measure.
4004
4005 double (*MIDI_GetPPQPos_EndOfMeasure)(MediaItem_Take* take, double ppqpos);
4006#endif
4007
4008#if defined(REAPERAPI_WANT_MIDI_GetPPQPos_StartOfMeasure) || !defined(REAPERAPI_MINIMAL)
4009REAPERAPI_DEF //==============================================
4010// MIDI_GetPPQPos_StartOfMeasure
4011// Returns the MIDI tick (ppq) position corresponding to the start of the measure.
4012
4013 double (*MIDI_GetPPQPos_StartOfMeasure)(MediaItem_Take* take, double ppqpos);
4014#endif
4015
4016#if defined(REAPERAPI_WANT_MIDI_GetPPQPosFromProjQN) || !defined(REAPERAPI_MINIMAL)
4017REAPERAPI_DEF //==============================================
4018// MIDI_GetPPQPosFromProjQN
4019// Returns the MIDI tick (ppq) position corresponding to a specific project time in quarter notes.
4020
4021 double (*MIDI_GetPPQPosFromProjQN)(MediaItem_Take* take, double projqn);
4022#endif
4023
4024#if defined(REAPERAPI_WANT_MIDI_GetPPQPosFromProjTime) || !defined(REAPERAPI_MINIMAL)
4025REAPERAPI_DEF //==============================================
4026// MIDI_GetPPQPosFromProjTime
4027// Returns the MIDI tick (ppq) position corresponding to a specific project time in seconds.
4028
4029 double (*MIDI_GetPPQPosFromProjTime)(MediaItem_Take* take, double projtime);
4030#endif
4031
4032#if defined(REAPERAPI_WANT_MIDI_GetProjQNFromPPQPos) || !defined(REAPERAPI_MINIMAL)
4033REAPERAPI_DEF //==============================================
4034// MIDI_GetProjQNFromPPQPos
4035// Returns the project time in quarter notes corresponding to a specific MIDI tick (ppq) position.
4036
4037 double (*MIDI_GetProjQNFromPPQPos)(MediaItem_Take* take, double ppqpos);
4038#endif
4039
4040#if defined(REAPERAPI_WANT_MIDI_GetProjTimeFromPPQPos) || !defined(REAPERAPI_MINIMAL)
4041REAPERAPI_DEF //==============================================
4042// MIDI_GetProjTimeFromPPQPos
4043// Returns the project time in seconds corresponding to a specific MIDI tick (ppq) position.
4044
4045 double (*MIDI_GetProjTimeFromPPQPos)(MediaItem_Take* take, double ppqpos);
4046#endif
4047
4048#if defined(REAPERAPI_WANT_MIDI_GetScale) || !defined(REAPERAPI_MINIMAL)
4049REAPERAPI_DEF //==============================================
4050// MIDI_GetScale
4051// 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.
4052
4053 bool (*MIDI_GetScale)(MediaItem_Take* take, int* rootOut, int* scaleOut, char* name, int name_sz);
4054#endif
4055
4056#if defined(REAPERAPI_WANT_MIDI_GetTextSysexEvt) || !defined(REAPERAPI_MINIMAL)
4057REAPERAPI_DEF //==============================================
4058// MIDI_GetTextSysexEvt
4059// Get MIDI meta-event properties. Allowable types are -1:sysex (msg should not include bounding F0..F7), 1-7:MIDI text event types.
4060
4061 bool (*MIDI_GetTextSysexEvt)(MediaItem_Take* take, int textsyxevtidx, bool* selectedOutOptional, bool* mutedOutOptional, double* ppqposOutOptional, int* typeOutOptional, char* msgOptional, int* msgOptional_sz);
4062#endif
4063
4064#if defined(REAPERAPI_WANT_MIDI_GetTrackHash) || !defined(REAPERAPI_MINIMAL)
4065REAPERAPI_DEF //==============================================
4066// MIDI_GetTrackHash
4067// 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
4068
4069 bool (*MIDI_GetTrackHash)(MediaTrack* track, bool notesonly, char* hash, int hash_sz);
4070#endif
4071
4072#if defined(REAPERAPI_WANT_MIDI_InsertCC) || !defined(REAPERAPI_MINIMAL)
4073REAPERAPI_DEF //==============================================
4074// MIDI_InsertCC
4075// Insert a new MIDI CC event.
4076
4077 bool (*MIDI_InsertCC)(MediaItem_Take* take, bool selected, bool muted, double ppqpos, int chanmsg, int chan, int msg2, int msg3);
4078#endif
4079
4080#if defined(REAPERAPI_WANT_MIDI_InsertEvt) || !defined(REAPERAPI_MINIMAL)
4081REAPERAPI_DEF //==============================================
4082// MIDI_InsertEvt
4083// Insert a new MIDI event.
4084
4085 bool (*MIDI_InsertEvt)(MediaItem_Take* take, bool selected, bool muted, double ppqpos, const char* bytestr, int bytestr_sz);
4086#endif
4087
4088#if defined(REAPERAPI_WANT_MIDI_InsertNote) || !defined(REAPERAPI_MINIMAL)
4089REAPERAPI_DEF //==============================================
4090// MIDI_InsertNote
4091// Insert a new MIDI note. Set noSort if inserting multiple events, then call MIDI_Sort when done.
4092
4093 bool (*MIDI_InsertNote)(MediaItem_Take* take, bool selected, bool muted, double startppqpos, double endppqpos, int chan, int pitch, int vel, const bool* noSortInOptional);
4094#endif
4095
4096#if defined(REAPERAPI_WANT_MIDI_InsertTextSysexEvt) || !defined(REAPERAPI_MINIMAL)
4097REAPERAPI_DEF //==============================================
4098// MIDI_InsertTextSysexEvt
4099// Insert a new MIDI text or sysex event. Allowable types are -1:sysex (msg should not include bounding F0..F7), 1-7:MIDI text event types.
4100
4101 bool (*MIDI_InsertTextSysexEvt)(MediaItem_Take* take, bool selected, bool muted, double ppqpos, int type, const char* bytestr, int bytestr_sz);
4102#endif
4103
4104#if defined(REAPERAPI_WANT_midi_reinit) || !defined(REAPERAPI_MINIMAL)
4105REAPERAPI_DEF //==============================================
4106// midi_reinit
4107// Reset all MIDI devices
4108
4109 void (*midi_reinit)();
4110#endif
4111
4112#if defined(REAPERAPI_WANT_MIDI_SelectAll) || !defined(REAPERAPI_MINIMAL)
4113REAPERAPI_DEF //==============================================
4114// MIDI_SelectAll
4115// Select or deselect all MIDI content.
4116
4117 void (*MIDI_SelectAll)(MediaItem_Take* take, bool select);
4118#endif
4119
4120#if defined(REAPERAPI_WANT_MIDI_SetAllEvts) || !defined(REAPERAPI_MINIMAL)
4121REAPERAPI_DEF //==============================================
4122// MIDI_SetAllEvts
4123// Set all MIDI data. MIDI buffer is passed in as a list of { int offset, char flag, int msglen, unsigned char msg[] }. offset: MIDI ticks from previous event, flag: &1=selected &2=muted, msglen: byte length of msg (usually 3), msg: the MIDI message. For tick intervals longer than a 32 bit word can represent, zero-length meta events may be placed between valid events. See MIDI_GetAllEvts.
4124
4125 bool (*MIDI_SetAllEvts)(MediaItem_Take* take, const char* buf, int buf_sz);
4126#endif
4127
4128#if defined(REAPERAPI_WANT_MIDI_SetCC) || !defined(REAPERAPI_MINIMAL)
4129REAPERAPI_DEF //==============================================
4130// MIDI_SetCC
4131// 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.
4132
4133 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);
4134#endif
4135
4136#if defined(REAPERAPI_WANT_MIDI_SetEvt) || !defined(REAPERAPI_MINIMAL)
4137REAPERAPI_DEF //==============================================
4138// MIDI_SetEvt
4139// Set MIDI event properties. Properties passed as NULL will not be set. set noSort if setting multiple events, then call MIDI_Sort when done.
4140
4141 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);
4142#endif
4143
4144#if defined(REAPERAPI_WANT_MIDI_SetItemExtents) || !defined(REAPERAPI_MINIMAL)
4145REAPERAPI_DEF //==============================================
4146// MIDI_SetItemExtents
4147// Set the start/end positions of a media item that contains a MIDI take.
4148
4149 bool (*MIDI_SetItemExtents)(MediaItem* item, double startQN, double endQN);
4150#endif
4151
4152#if defined(REAPERAPI_WANT_MIDI_SetNote) || !defined(REAPERAPI_MINIMAL)
4153REAPERAPI_DEF //==============================================
4154// MIDI_SetNote
4155// 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.
4156
4157 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);
4158#endif
4159
4160#if defined(REAPERAPI_WANT_MIDI_SetTextSysexEvt) || !defined(REAPERAPI_MINIMAL)
4161REAPERAPI_DEF //==============================================
4162// MIDI_SetTextSysexEvt
4163// 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.
4164
4165 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);
4166#endif
4167
4168#if defined(REAPERAPI_WANT_MIDI_Sort) || !defined(REAPERAPI_MINIMAL)
4169REAPERAPI_DEF //==============================================
4170// MIDI_Sort
4171// Sort MIDI events after multiple calls to MIDI_SetNote, MIDI_SetCC, etc.
4172
4173 void (*MIDI_Sort)(MediaItem_Take* take);
4174#endif
4175
4176#if defined(REAPERAPI_WANT_MIDIEditor_GetActive) || !defined(REAPERAPI_MINIMAL)
4177REAPERAPI_DEF //==============================================
4178// MIDIEditor_GetActive
4179// get a pointer to the focused MIDI editor window
4180// see MIDIEditor_GetMode, MIDIEditor_OnCommand
4181
4182 HWND (*MIDIEditor_GetActive)();
4183#endif
4184
4185#if defined(REAPERAPI_WANT_MIDIEditor_GetMode) || !defined(REAPERAPI_MINIMAL)
4186REAPERAPI_DEF //==============================================
4187// MIDIEditor_GetMode
4188// get the mode of a MIDI editor (0=piano roll, 1=event list, -1=invalid editor)
4189// see MIDIEditor_GetActive, MIDIEditor_OnCommand
4190
4191 int (*MIDIEditor_GetMode)(HWND midieditor);
4192#endif
4193
4194#if defined(REAPERAPI_WANT_MIDIEditor_GetSetting_int) || !defined(REAPERAPI_MINIMAL)
4195REAPERAPI_DEF //==============================================
4196// MIDIEditor_GetSetting_int
4197// Get settings from a MIDI editor. setting_desc can be:
4198// snap_enabled: returns 0 or 1
4199// active_note_row: returns 0-127
4200// 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
4201// default_note_vel: returns 0-127
4202// default_note_chan: returns 0-15
4203// default_note_len: returns default length in MIDI ticks
4204// scale_enabled: returns 0-1
4205// scale_root: returns 0-12 (0=C)
4206// if setting_desc is unsupported, the function returns -1.
4207// See MIDIEditor_GetActive, MIDIEditor_GetSetting_str
4208
4209 int (*MIDIEditor_GetSetting_int)(HWND midieditor, const char* setting_desc);
4210#endif
4211
4212#if defined(REAPERAPI_WANT_MIDIEditor_GetSetting_str) || !defined(REAPERAPI_MINIMAL)
4213REAPERAPI_DEF //==============================================
4214// MIDIEditor_GetSetting_str
4215// Get settings from a MIDI editor. setting_desc can be:
4216// last_clicked_cc_lane: returns text description ("velocity", "pitch", etc)
4217// scale: returns the scale record, for example "102034050607" for a major scale
4218// if setting_desc is unsupported, the function returns false.
4219// See MIDIEditor_GetActive, MIDIEditor_GetSetting_int
4220
4221 bool (*MIDIEditor_GetSetting_str)(HWND midieditor, const char* setting_desc, char* buf, int buf_sz);
4222#endif
4223
4224#if defined(REAPERAPI_WANT_MIDIEditor_GetTake) || !defined(REAPERAPI_MINIMAL)
4225REAPERAPI_DEF //==============================================
4226// MIDIEditor_GetTake
4227// get the take that is currently being edited in this MIDI editor
4228
4229 MediaItem_Take* (*MIDIEditor_GetTake)(HWND midieditor);
4230#endif
4231
4232#if defined(REAPERAPI_WANT_MIDIEditor_LastFocused_OnCommand) || !defined(REAPERAPI_MINIMAL)
4233REAPERAPI_DEF //==============================================
4234// MIDIEditor_LastFocused_OnCommand
4235// 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.
4236// see MIDIEditor_OnCommand
4237
4238 bool (*MIDIEditor_LastFocused_OnCommand)(int command_id, bool islistviewcommand);
4239#endif
4240
4241#if defined(REAPERAPI_WANT_MIDIEditor_OnCommand) || !defined(REAPERAPI_MINIMAL)
4242REAPERAPI_DEF //==============================================
4243// MIDIEditor_OnCommand
4244// Send an action command to a MIDI editor. Returns false if the supplied MIDI editor pointer is not valid (not an open MIDI editor).
4245// see MIDIEditor_GetActive, MIDIEditor_LastFocused_OnCommand
4246
4247 bool (*MIDIEditor_OnCommand)(HWND midieditor, int command_id);
4248#endif
4249
4250#if defined(REAPERAPI_WANT_mkpanstr) || !defined(REAPERAPI_MINIMAL)
4251REAPERAPI_DEF //==============================================
4252// mkpanstr
4253
4254 void (*mkpanstr)(char* strNeed64, double pan);
4255#endif
4256
4257#if defined(REAPERAPI_WANT_mkvolpanstr) || !defined(REAPERAPI_MINIMAL)
4258REAPERAPI_DEF //==============================================
4259// mkvolpanstr
4260
4261 void (*mkvolpanstr)(char* strNeed64, double vol, double pan);
4262#endif
4263
4264#if defined(REAPERAPI_WANT_mkvolstr) || !defined(REAPERAPI_MINIMAL)
4265REAPERAPI_DEF //==============================================
4266// mkvolstr
4267
4268 void (*mkvolstr)(char* strNeed64, double vol);
4269#endif
4270
4271#if defined(REAPERAPI_WANT_MoveEditCursor) || !defined(REAPERAPI_MINIMAL)
4272REAPERAPI_DEF //==============================================
4273// MoveEditCursor
4274
4275 void (*MoveEditCursor)(double adjamt, bool dosel);
4276#endif
4277
4278#if defined(REAPERAPI_WANT_MoveMediaItemToTrack) || !defined(REAPERAPI_MINIMAL)
4279REAPERAPI_DEF //==============================================
4280// MoveMediaItemToTrack
4281// returns TRUE if move succeeded
4282
4283 bool (*MoveMediaItemToTrack)(MediaItem* item, MediaTrack* desttr);
4284#endif
4285
4286#if defined(REAPERAPI_WANT_MuteAllTracks) || !defined(REAPERAPI_MINIMAL)
4287REAPERAPI_DEF //==============================================
4288// MuteAllTracks
4289
4290 void (*MuteAllTracks)(bool mute);
4291#endif
4292
4293#if defined(REAPERAPI_WANT_my_getViewport) || !defined(REAPERAPI_MINIMAL)
4294REAPERAPI_DEF //==============================================
4295// my_getViewport
4296
4297 void (*my_getViewport)(RECT* r, const RECT* sr, bool wantWorkArea);
4298#endif
4299
4300#if defined(REAPERAPI_WANT_NamedCommandLookup) || !defined(REAPERAPI_MINIMAL)
4301REAPERAPI_DEF //==============================================
4302// NamedCommandLookup
4303// 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.
4304
4305 int (*NamedCommandLookup)(const char* command_name);
4306#endif
4307
4308#if defined(REAPERAPI_WANT_OnPauseButton) || !defined(REAPERAPI_MINIMAL)
4309REAPERAPI_DEF //==============================================
4310// OnPauseButton
4311// direct way to simulate pause button hit
4312
4313 void (*OnPauseButton)();
4314#endif
4315
4316#if defined(REAPERAPI_WANT_OnPauseButtonEx) || !defined(REAPERAPI_MINIMAL)
4317REAPERAPI_DEF //==============================================
4318// OnPauseButtonEx
4319// direct way to simulate pause button hit
4320
4321 void (*OnPauseButtonEx)(ReaProject* proj);
4322#endif
4323
4324#if defined(REAPERAPI_WANT_OnPlayButton) || !defined(REAPERAPI_MINIMAL)
4325REAPERAPI_DEF //==============================================
4326// OnPlayButton
4327// direct way to simulate play button hit
4328
4329 void (*OnPlayButton)();
4330#endif
4331
4332#if defined(REAPERAPI_WANT_OnPlayButtonEx) || !defined(REAPERAPI_MINIMAL)
4333REAPERAPI_DEF //==============================================
4334// OnPlayButtonEx
4335// direct way to simulate play button hit
4336
4337 void (*OnPlayButtonEx)(ReaProject* proj);
4338#endif
4339
4340#if defined(REAPERAPI_WANT_OnStopButton) || !defined(REAPERAPI_MINIMAL)
4341REAPERAPI_DEF //==============================================
4342// OnStopButton
4343// direct way to simulate stop button hit
4344
4345 void (*OnStopButton)();
4346#endif
4347
4348#if defined(REAPERAPI_WANT_OnStopButtonEx) || !defined(REAPERAPI_MINIMAL)
4349REAPERAPI_DEF //==============================================
4350// OnStopButtonEx
4351// direct way to simulate stop button hit
4352
4353 void (*OnStopButtonEx)(ReaProject* proj);
4354#endif
4355
4356#if defined(REAPERAPI_WANT_OpenColorThemeFile) || !defined(REAPERAPI_MINIMAL)
4357REAPERAPI_DEF //==============================================
4358// OpenColorThemeFile
4359
4360 bool (*OpenColorThemeFile)(const char* fn);
4361#endif
4362
4363#if defined(REAPERAPI_WANT_OpenMediaExplorer) || !defined(REAPERAPI_MINIMAL)
4364REAPERAPI_DEF //==============================================
4365// OpenMediaExplorer
4366// 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.
4367
4368 HWND (*OpenMediaExplorer)(const char* mediafn, bool play);
4369#endif
4370
4371#if defined(REAPERAPI_WANT_OscLocalMessageToHost) || !defined(REAPERAPI_MINIMAL)
4372REAPERAPI_DEF //==============================================
4373// OscLocalMessageToHost
4374// 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.
4375
4376 void (*OscLocalMessageToHost)(const char* message, const double* valueInOptional);
4377#endif
4378
4379#if defined(REAPERAPI_WANT_parse_timestr) || !defined(REAPERAPI_MINIMAL)
4380REAPERAPI_DEF //==============================================
4381// parse_timestr
4382// Parse hh:mm:ss.sss time string, return time in seconds (or 0.0 on error). See parse_timestr_pos, parse_timestr_len.
4383
4384 double (*parse_timestr)(const char* buf);
4385#endif
4386
4387#if defined(REAPERAPI_WANT_parse_timestr_len) || !defined(REAPERAPI_MINIMAL)
4388REAPERAPI_DEF //==============================================
4389// parse_timestr_len
4390// time formatting mode overrides: -1=proj default.
4391// 0=time
4392// 1=measures.beats + time
4393// 2=measures.beats
4394// 3=seconds
4395// 4=samples
4396// 5=h:m:s:f
4397
4398 double (*parse_timestr_len)(const char* buf, double offset, int modeoverride);
4399#endif
4400
4401#if defined(REAPERAPI_WANT_parse_timestr_pos) || !defined(REAPERAPI_MINIMAL)
4402REAPERAPI_DEF //==============================================
4403// parse_timestr_pos
4404// Parse time string, time formatting mode overrides: -1=proj default.
4405// 0=time
4406// 1=measures.beats + time
4407// 2=measures.beats
4408// 3=seconds
4409// 4=samples
4410// 5=h:m:s:f
4411
4412 double (*parse_timestr_pos)(const char* buf, int modeoverride);
4413#endif
4414
4415#if defined(REAPERAPI_WANT_parsepanstr) || !defined(REAPERAPI_MINIMAL)
4416REAPERAPI_DEF //==============================================
4417// parsepanstr
4418
4419 double (*parsepanstr)(const char* str);
4420#endif
4421
4422#if defined(REAPERAPI_WANT_PCM_Sink_Create) || !defined(REAPERAPI_MINIMAL)
4423REAPERAPI_DEF //==============================================
4424// PCM_Sink_Create
4425
4426 PCM_sink* (*PCM_Sink_Create)(const char* filename, const char* cfg, int cfg_sz, int nch, int srate, bool buildpeaks);
4427#endif
4428
4429#if defined(REAPERAPI_WANT_PCM_Sink_CreateEx) || !defined(REAPERAPI_MINIMAL)
4430REAPERAPI_DEF //==============================================
4431// PCM_Sink_CreateEx
4432
4433 PCM_sink* (*PCM_Sink_CreateEx)(ReaProject* proj, const char* filename, const char* cfg, int cfg_sz, int nch, int srate, bool buildpeaks);
4434#endif
4435
4436#if defined(REAPERAPI_WANT_PCM_Sink_CreateMIDIFile) || !defined(REAPERAPI_MINIMAL)
4437REAPERAPI_DEF //==============================================
4438// PCM_Sink_CreateMIDIFile
4439
4440 PCM_sink* (*PCM_Sink_CreateMIDIFile)(const char* filename, const char* cfg, int cfg_sz, double bpm, int div);
4441#endif
4442
4443#if defined(REAPERAPI_WANT_PCM_Sink_CreateMIDIFileEx) || !defined(REAPERAPI_MINIMAL)
4444REAPERAPI_DEF //==============================================
4445// PCM_Sink_CreateMIDIFileEx
4446
4447 PCM_sink* (*PCM_Sink_CreateMIDIFileEx)(ReaProject* proj, const char* filename, const char* cfg, int cfg_sz, double bpm, int div);
4448#endif
4449
4450#if defined(REAPERAPI_WANT_PCM_Sink_Enum) || !defined(REAPERAPI_MINIMAL)
4451REAPERAPI_DEF //==============================================
4452// PCM_Sink_Enum
4453
4454 unsigned int (*PCM_Sink_Enum)(int idx, const char** descstrOut);
4455#endif
4456
4457#if defined(REAPERAPI_WANT_PCM_Sink_GetExtension) || !defined(REAPERAPI_MINIMAL)
4458REAPERAPI_DEF //==============================================
4459// PCM_Sink_GetExtension
4460
4461 const char* (*PCM_Sink_GetExtension)(const char* data, int data_sz);
4462#endif
4463
4464#if defined(REAPERAPI_WANT_PCM_Sink_ShowConfig) || !defined(REAPERAPI_MINIMAL)
4465REAPERAPI_DEF //==============================================
4466// PCM_Sink_ShowConfig
4467
4468 HWND (*PCM_Sink_ShowConfig)(const char* cfg, int cfg_sz, HWND hwndParent);
4469#endif
4470
4471#if defined(REAPERAPI_WANT_PCM_Source_CreateFromFile) || !defined(REAPERAPI_MINIMAL)
4472REAPERAPI_DEF //==============================================
4473// PCM_Source_CreateFromFile
4474// See PCM_Source_CreateFromFileEx.
4475
4476 PCM_source* (*PCM_Source_CreateFromFile)(const char* filename);
4477#endif
4478
4479#if defined(REAPERAPI_WANT_PCM_Source_CreateFromFileEx) || !defined(REAPERAPI_MINIMAL)
4480REAPERAPI_DEF //==============================================
4481// PCM_Source_CreateFromFileEx
4482// Create a PCM_source from filename, and override pref of MIDI files being imported as in-project MIDI events.
4483
4484 PCM_source* (*PCM_Source_CreateFromFileEx)(const char* filename, bool forcenoMidiImp);
4485#endif
4486
4487#if defined(REAPERAPI_WANT_PCM_Source_CreateFromSimple) || !defined(REAPERAPI_MINIMAL)
4488REAPERAPI_DEF //==============================================
4489// PCM_Source_CreateFromSimple
4490// Creates a PCM_source from a ISimpleMediaDecoder
4491// (if fn is non-null, it will open the file in dec)
4492
4493 PCM_source* (*PCM_Source_CreateFromSimple)(ISimpleMediaDecoder* dec, const char* fn);
4494#endif
4495
4496#if defined(REAPERAPI_WANT_PCM_Source_CreateFromType) || !defined(REAPERAPI_MINIMAL)
4497REAPERAPI_DEF //==============================================
4498// PCM_Source_CreateFromType
4499// Create a PCM_source from a "type" (use this if you're going to load its state via LoadState/ProjectStateContext).
4500// Valid types include "WAVE", "MIDI", or whatever plug-ins define as well.
4501
4502 PCM_source* (*PCM_Source_CreateFromType)(const char* sourcetype);
4503#endif
4504
4505#if defined(REAPERAPI_WANT_PCM_Source_Destroy) || !defined(REAPERAPI_MINIMAL)
4506REAPERAPI_DEF //==============================================
4507// PCM_Source_Destroy
4508// Deletes a PCM_source -- be sure that you remove any project reference before deleting a source
4509
4510 void (*PCM_Source_Destroy)(PCM_source* src);
4511#endif
4512
4513#if defined(REAPERAPI_WANT_PCM_Source_GetPeaks) || !defined(REAPERAPI_MINIMAL)
4514REAPERAPI_DEF //==============================================
4515// PCM_Source_GetPeaks
4516// Gets block of peak samples to buf. Note that the peak samples are interleaved, but in two or three blocks (maximums, then minimums, then extra). Return value has 20 bits of returned sample count, then 4 bits of output_mode (0xf00000), then a bit to signify whether extra_type was available (0x1000000). extra_type can be 115 ('s') for spectral information, which will return peak samples as integers with the low 15 bits frequency, next 14 bits tonality.
4517
4518 int (*PCM_Source_GetPeaks)(PCM_source* src, double peakrate, double starttime, int numchannels, int numsamplesperchannel, int want_extra_type, double* buf);
4519#endif
4520
4521#if defined(REAPERAPI_WANT_PCM_Source_GetSectionInfo) || !defined(REAPERAPI_MINIMAL)
4522REAPERAPI_DEF //==============================================
4523// PCM_Source_GetSectionInfo
4524// If a section/reverse block, retrieves offset/len/reverse. return true if success
4525
4526 bool (*PCM_Source_GetSectionInfo)(PCM_source* src, double* offsOut, double* lenOut, bool* revOut);
4527#endif
4528
4529#if defined(REAPERAPI_WANT_PeakBuild_Create) || !defined(REAPERAPI_MINIMAL)
4530REAPERAPI_DEF //==============================================
4531// PeakBuild_Create
4532
4533 REAPER_PeakBuild_Interface* (*PeakBuild_Create)(PCM_source* src, const char* fn, int srate, int nch);
4534#endif
4535
4536#if defined(REAPERAPI_WANT_PeakBuild_CreateEx) || !defined(REAPERAPI_MINIMAL)
4537REAPERAPI_DEF //==============================================
4538// PeakBuild_CreateEx
4539// flags&1 for FP support
4540
4541 REAPER_PeakBuild_Interface* (*PeakBuild_CreateEx)(PCM_source* src, const char* fn, int srate, int nch, int flags);
4542#endif
4543
4544#if defined(REAPERAPI_WANT_PeakGet_Create) || !defined(REAPERAPI_MINIMAL)
4545REAPERAPI_DEF //==============================================
4546// PeakGet_Create
4547
4548 REAPER_PeakGet_Interface* (*PeakGet_Create)(const char* fn, int srate, int nch);
4549#endif
4550
4551#if defined(REAPERAPI_WANT_PitchShiftSubModeMenu) || !defined(REAPERAPI_MINIMAL)
4552REAPERAPI_DEF //==============================================
4553// PitchShiftSubModeMenu
4554// menu to select/modify pitch shifter submode, returns new value (or old value if no item selected)
4555
4556 int (*PitchShiftSubModeMenu)(HWND hwnd, int x, int y, int mode, int submode_sel);
4557#endif
4558
4559#if defined(REAPERAPI_WANT_PlayPreview) || !defined(REAPERAPI_MINIMAL)
4560REAPERAPI_DEF //==============================================
4561// PlayPreview
4562// return nonzero on success
4563
4564 int (*PlayPreview)(preview_register_t* preview);
4565#endif
4566
4567#if defined(REAPERAPI_WANT_PlayPreviewEx) || !defined(REAPERAPI_MINIMAL)
4568REAPERAPI_DEF //==============================================
4569// PlayPreviewEx
4570// return nonzero on success
4571
4572 int (*PlayPreviewEx)(preview_register_t* preview, int bufflags, double MSI);
4573#endif
4574
4575#if defined(REAPERAPI_WANT_PlayTrackPreview) || !defined(REAPERAPI_MINIMAL)
4576REAPERAPI_DEF //==============================================
4577// PlayTrackPreview
4578// return nonzero on success,in these,m_out_chan is a track index (0-n)
4579
4580 int (*PlayTrackPreview)(preview_register_t* preview);
4581#endif
4582
4583#if defined(REAPERAPI_WANT_PlayTrackPreview2) || !defined(REAPERAPI_MINIMAL)
4584REAPERAPI_DEF //==============================================
4585// PlayTrackPreview2
4586// return nonzero on success,in these,m_out_chan is a track index (0-n)
4587
4588 int (*PlayTrackPreview2)(ReaProject* proj, preview_register_t* preview);
4589#endif
4590
4591#if defined(REAPERAPI_WANT_PlayTrackPreview2Ex) || !defined(REAPERAPI_MINIMAL)
4592REAPERAPI_DEF //==============================================
4593// PlayTrackPreview2Ex
4594// return nonzero on success,in these,m_out_chan is a track index (0-n)
4595
4596 int (*PlayTrackPreview2Ex)(ReaProject* proj, preview_register_t* preview, int flags, double msi);
4597#endif
4598
4599#if defined(REAPERAPI_WANT_plugin_getapi) || !defined(REAPERAPI_MINIMAL)
4600REAPERAPI_DEF //==============================================
4601// plugin_getapi
4602
4603 void* (*plugin_getapi)(const char* name);
4604#endif
4605
4606#if defined(REAPERAPI_WANT_plugin_getFilterList) || !defined(REAPERAPI_MINIMAL)
4607REAPERAPI_DEF //==============================================
4608// plugin_getFilterList
4609// Returns a double-NULL terminated list of importable media files, suitable for passing to GetOpenFileName() etc. Includes *.* (All files).
4610
4611 const char* (*plugin_getFilterList)();
4612#endif
4613
4614#if defined(REAPERAPI_WANT_plugin_getImportableProjectFilterList) || !defined(REAPERAPI_MINIMAL)
4615REAPERAPI_DEF //==============================================
4616// plugin_getImportableProjectFilterList
4617// Returns a double-NULL terminated list of importable project files, suitable for passing to GetOpenFileName() etc. Includes *.* (All files).
4618
4619 const char* (*plugin_getImportableProjectFilterList)();
4620#endif
4621
4622#if defined(REAPERAPI_WANT_plugin_register) || !defined(REAPERAPI_MINIMAL)
4623REAPERAPI_DEF //==============================================
4624// plugin_register
4625// like rec->Register
4626//
4627// if you have a function called myfunction(..) that you want to expose to other extensions or plug-ins,
4628// use register("API_myfunction",funcaddress), and "-API_myfunction" to remove.
4629// Other extensions then use GetFunc("myfunction") to get the function pointer.
4630// REAPER will also export the function address to ReaScript, so your extension could supply
4631// a Python module that provides a wrapper called RPR_myfunction(..).
4632// register("APIdef_myfunction",defstring) will include your function declaration and help
4633// in the auto-generated REAPER API header and ReaScript documentation.
4634// defstring is four null-separated fields: return type, argument types, argument names, and help.
4635// Example: double myfunction(char* str, int flag) would have
4636// defstring="double\0char*,int\0str,flag\0help text for myfunction"
4637//
4638// another thing you can register is "hookcommand", which you pass a callback:
4639// NON_API: bool runCommand(int command, int flag);
4640// register("hookcommand",runCommand);
4641// which returns TRUE to eat (process) the command.
4642// flag is usually 0 but can sometimes have useful info depending on the message.
4643// note: it's OK to call Main_OnCommand() within your runCommand, however you MUST check for recursion if doing so!
4644// in fact, any use of this hook should benefit from a simple reentrancy test...
4645//
4646// to get notified when an action of the main section is performed,
4647// you can register "hookpostcommand", which you pass a callback:
4648// NON_API: void postCommand(int command, int flag);
4649// register("hookpostcommand",postCommand);
4650//
4651// you can also register "hookcommand2", which you pass a callback:
4652// NON_API: bool onAction(KbdSectionInfo *sec, int command, int val, int valhw, int relmode, HWND hwnd);
4653// register("hookcommand2",onAction);
4654// which returns TRUE to eat (process) the command.
4655// val/valhw are used for actions learned with MIDI/OSC.
4656// val = [0..127] and valhw = -1 for MIDI CC,
4657// valhw >=0 for MIDI pitch or OSC with value = (valhw|val<<7)/16383.0,
4658// relmode absolute(0) or 1/2/3 for relative adjust modes
4659//
4660// you can also register command IDs for actions,
4661// register with "command_id", parameter is a unique string with only A-Z, 0-9,
4662// returns command ID (or 0 if not supported/out of actions)
4663//
4664// register("command_id_lookup", unique_string) will look up the integer ID of the named action
4665// without registering the string if it doesn't already exist.
4666
4667 int (*plugin_register)(const char* name, void* infostruct);
4668#endif
4669
4670#if defined(REAPERAPI_WANT_PluginWantsAlwaysRunFx) || !defined(REAPERAPI_MINIMAL)
4671REAPERAPI_DEF //==============================================
4672// PluginWantsAlwaysRunFx
4673
4674 void (*PluginWantsAlwaysRunFx)(int amt);
4675#endif
4676
4677#if defined(REAPERAPI_WANT_PreventUIRefresh) || !defined(REAPERAPI_MINIMAL)
4678REAPERAPI_DEF //==============================================
4679// PreventUIRefresh
4680// adds prevent_count to the UI refresh prevention state; always add then remove the same amount, or major disfunction will occur
4681
4682 void (*PreventUIRefresh)(int prevent_count);
4683#endif
4684
4685#if defined(REAPERAPI_WANT_projectconfig_var_addr) || !defined(REAPERAPI_MINIMAL)
4686REAPERAPI_DEF //==============================================
4687// projectconfig_var_addr
4688
4689 void* (*projectconfig_var_addr)(ReaProject* proj, int idx);
4690#endif
4691
4692#if defined(REAPERAPI_WANT_projectconfig_var_getoffs) || !defined(REAPERAPI_MINIMAL)
4693REAPERAPI_DEF //==============================================
4694// projectconfig_var_getoffs
4695// returns offset to pass to projectconfig_var_addr() to get project-config var of name. szout gets size of object.
4696
4697 int (*projectconfig_var_getoffs)(const char* name, int* szOut);
4698#endif
4699
4700#if defined(REAPERAPI_WANT_ReaperGetPitchShiftAPI) || !defined(REAPERAPI_MINIMAL)
4701REAPERAPI_DEF //==============================================
4702// ReaperGetPitchShiftAPI
4703// version must be REAPER_PITCHSHIFT_API_VER
4704
4705 IReaperPitchShift* (*ReaperGetPitchShiftAPI)(int version);
4706#endif
4707
4708#if defined(REAPERAPI_WANT_ReaScriptError) || !defined(REAPERAPI_MINIMAL)
4709REAPERAPI_DEF //==============================================
4710// ReaScriptError
4711// Causes REAPER to display the error message after the current ReaScript finishes.
4712
4713 void (*ReaScriptError)(const char* errmsg);
4714#endif
4715
4716#if defined(REAPERAPI_WANT_RecursiveCreateDirectory) || !defined(REAPERAPI_MINIMAL)
4717REAPERAPI_DEF //==============================================
4718// RecursiveCreateDirectory
4719// returns positive value on success, 0 on failure.
4720
4721 int (*RecursiveCreateDirectory)(const char* path, size_t ignored);
4722#endif
4723
4724#if defined(REAPERAPI_WANT_RefreshToolbar) || !defined(REAPERAPI_MINIMAL)
4725REAPERAPI_DEF //==============================================
4726// RefreshToolbar
4727// See RefreshToolbar2.
4728
4729 void (*RefreshToolbar)(int command_id);
4730#endif
4731
4732#if defined(REAPERAPI_WANT_RefreshToolbar2) || !defined(REAPERAPI_MINIMAL)
4733REAPERAPI_DEF //==============================================
4734// RefreshToolbar2
4735// Refresh the toolbar button states of a toggle action.
4736
4737 void (*RefreshToolbar2)(int section_id, int command_id);
4738#endif
4739
4740#if defined(REAPERAPI_WANT_relative_fn) || !defined(REAPERAPI_MINIMAL)
4741REAPERAPI_DEF //==============================================
4742// relative_fn
4743// Makes a filename "in" relative to the current project, if any.
4744
4745 void (*relative_fn)(const char* in, char* out, int out_sz);
4746#endif
4747
4748#if defined(REAPERAPI_WANT_RemoveTrackSend) || !defined(REAPERAPI_MINIMAL)
4749REAPERAPI_DEF //==============================================
4750// RemoveTrackSend
4751// Remove a send/receive/hardware output, return true on success. category is <0 for receives, 0=sends, >0 for hardware outputs. See CreateTrackSend, GetSetTrackSendInfo, GetTrackSendInfo_Value, SetTrackSendInfo_Value, GetTrackNumSends.
4752
4753 bool (*RemoveTrackSend)(MediaTrack* tr, int category, int sendidx);
4754#endif
4755
4756#if defined(REAPERAPI_WANT_RenderFileSection) || !defined(REAPERAPI_MINIMAL)
4757REAPERAPI_DEF //==============================================
4758// RenderFileSection
4759// Not available while playing back.
4760
4761 bool (*RenderFileSection)(const char* source_filename, const char* target_filename, double start_percent, double end_percent, double playrate);
4762#endif
4763
4764#if defined(REAPERAPI_WANT_Resample_EnumModes) || !defined(REAPERAPI_MINIMAL)
4765REAPERAPI_DEF //==============================================
4766// Resample_EnumModes
4767
4768 const char* (*Resample_EnumModes)(int mode);
4769#endif
4770
4771#if defined(REAPERAPI_WANT_Resampler_Create) || !defined(REAPERAPI_MINIMAL)
4772REAPERAPI_DEF //==============================================
4773// Resampler_Create
4774
4775 REAPER_Resample_Interface* (*Resampler_Create)();
4776#endif
4777
4778#if defined(REAPERAPI_WANT_resolve_fn) || !defined(REAPERAPI_MINIMAL)
4779REAPERAPI_DEF //==============================================
4780// resolve_fn
4781// See resolve_fn2.
4782
4783 void (*resolve_fn)(const char* in, char* out, int out_sz);
4784#endif
4785
4786#if defined(REAPERAPI_WANT_resolve_fn2) || !defined(REAPERAPI_MINIMAL)
4787REAPERAPI_DEF //==============================================
4788// resolve_fn2
4789// Resolves a filename "in" by using project settings etc. If no file found, out will be a copy of in.
4790
4791 void (*resolve_fn2)(const char* in, char* out, int out_sz, const char* checkSubDirOptional);
4792#endif
4793
4794#if defined(REAPERAPI_WANT_ReverseNamedCommandLookup) || !defined(REAPERAPI_MINIMAL)
4795REAPERAPI_DEF //==============================================
4796// ReverseNamedCommandLookup
4797// 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.
4798
4799 const char* (*ReverseNamedCommandLookup)(int command_id);
4800#endif
4801
4802#if defined(REAPERAPI_WANT_ScaleFromEnvelopeMode) || !defined(REAPERAPI_MINIMAL)
4803REAPERAPI_DEF //==============================================
4804// ScaleFromEnvelopeMode
4805// See GetEnvelopeScalingMode.
4806
4807 double (*ScaleFromEnvelopeMode)(int scaling_mode, double val);
4808#endif
4809
4810#if defined(REAPERAPI_WANT_ScaleToEnvelopeMode) || !defined(REAPERAPI_MINIMAL)
4811REAPERAPI_DEF //==============================================
4812// ScaleToEnvelopeMode
4813// See GetEnvelopeScalingMode.
4814
4815 double (*ScaleToEnvelopeMode)(int scaling_mode, double val);
4816#endif
4817
4818#if defined(REAPERAPI_WANT_screenset_register) || !defined(REAPERAPI_MINIMAL)
4819REAPERAPI_DEF //==============================================
4820// screenset_register
4821
4822 void (*screenset_register)(char* id, void* callbackFunc, void* param);
4823#endif
4824
4825#if defined(REAPERAPI_WANT_screenset_registerNew) || !defined(REAPERAPI_MINIMAL)
4826REAPERAPI_DEF //==============================================
4827// screenset_registerNew
4828
4829 void (*screenset_registerNew)(char* id, screensetNewCallbackFunc callbackFunc, void* param);
4830#endif
4831
4832#if defined(REAPERAPI_WANT_screenset_unregister) || !defined(REAPERAPI_MINIMAL)
4833REAPERAPI_DEF //==============================================
4834// screenset_unregister
4835
4836 void (*screenset_unregister)(char* id);
4837#endif
4838
4839#if defined(REAPERAPI_WANT_screenset_unregisterByParam) || !defined(REAPERAPI_MINIMAL)
4840REAPERAPI_DEF //==============================================
4841// screenset_unregisterByParam
4842
4843 void (*screenset_unregisterByParam)(void* param);
4844#endif
4845
4846#if defined(REAPERAPI_WANT_screenset_updateLastFocus) || !defined(REAPERAPI_MINIMAL)
4847REAPERAPI_DEF //==============================================
4848// screenset_updateLastFocus
4849
4850 void (*screenset_updateLastFocus)(HWND prevWin);
4851#endif
4852
4853#if defined(REAPERAPI_WANT_SectionFromUniqueID) || !defined(REAPERAPI_MINIMAL)
4854REAPERAPI_DEF //==============================================
4855// SectionFromUniqueID
4856
4857 KbdSectionInfo* (*SectionFromUniqueID)(int uniqueID);
4858#endif
4859
4860#if defined(REAPERAPI_WANT_SelectAllMediaItems) || !defined(REAPERAPI_MINIMAL)
4861REAPERAPI_DEF //==============================================
4862// SelectAllMediaItems
4863
4864 void (*SelectAllMediaItems)(ReaProject* proj, bool selected);
4865#endif
4866
4867#if defined(REAPERAPI_WANT_SelectProjectInstance) || !defined(REAPERAPI_MINIMAL)
4868REAPERAPI_DEF //==============================================
4869// SelectProjectInstance
4870
4871 void (*SelectProjectInstance)(ReaProject* proj);
4872#endif
4873
4874#if defined(REAPERAPI_WANT_SendLocalOscMessage) || !defined(REAPERAPI_MINIMAL)
4875REAPERAPI_DEF //==============================================
4876// SendLocalOscMessage
4877// Send an OSC message to REAPER. See CreateLocalOscHandler, DestroyLocalOscHandler.
4878
4879 void (*SendLocalOscMessage)(void* local_osc_handler, const char* msg, int msglen);
4880#endif
4881
4882#if defined(REAPERAPI_WANT_SetActiveTake) || !defined(REAPERAPI_MINIMAL)
4883REAPERAPI_DEF //==============================================
4884// SetActiveTake
4885// set this take active in this media item
4886
4887 void (*SetActiveTake)(MediaItem_Take* take);
4888#endif
4889
4890#if defined(REAPERAPI_WANT_SetAutomationMode) || !defined(REAPERAPI_MINIMAL)
4891REAPERAPI_DEF //==============================================
4892// SetAutomationMode
4893// sets all or selected tracks to mode.
4894
4895 void (*SetAutomationMode)(int mode, bool onlySel);
4896#endif
4897
4898#if defined(REAPERAPI_WANT_SetCurrentBPM) || !defined(REAPERAPI_MINIMAL)
4899REAPERAPI_DEF //==============================================
4900// SetCurrentBPM
4901// set current BPM in project, set wantUndo=true to add undo point
4902
4903 void (*SetCurrentBPM)(ReaProject* __proj, double bpm, bool wantUndo);
4904#endif
4905
4906#if defined(REAPERAPI_WANT_SetCursorContext) || !defined(REAPERAPI_MINIMAL)
4907REAPERAPI_DEF //==============================================
4908// SetCursorContext
4909// 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)
4910
4911 void (*SetCursorContext)(int mode, TrackEnvelope* envInOptional);
4912#endif
4913
4914#if defined(REAPERAPI_WANT_SetEditCurPos) || !defined(REAPERAPI_MINIMAL)
4915REAPERAPI_DEF //==============================================
4916// SetEditCurPos
4917
4918 void (*SetEditCurPos)(double time, bool moveview, bool seekplay);
4919#endif
4920
4921#if defined(REAPERAPI_WANT_SetEditCurPos2) || !defined(REAPERAPI_MINIMAL)
4922REAPERAPI_DEF //==============================================
4923// SetEditCurPos2
4924
4925 void (*SetEditCurPos2)(ReaProject* proj, double time, bool moveview, bool seekplay);
4926#endif
4927
4928#if defined(REAPERAPI_WANT_SetEnvelopePoint) || !defined(REAPERAPI_MINIMAL)
4929REAPERAPI_DEF //==============================================
4930// SetEnvelopePoint
4931// 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.
4932
4933 bool (*SetEnvelopePoint)(TrackEnvelope* envelope, int ptidx, double* timeInOptional, double* valueInOptional, int* shapeInOptional, double* tensionInOptional, bool* selectedInOptional, bool* noSortInOptional);
4934#endif
4935
4936#if defined(REAPERAPI_WANT_SetEnvelopePointEx) || !defined(REAPERAPI_MINIMAL)
4937REAPERAPI_DEF //==============================================
4938// SetEnvelopePointEx
4939// 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. Tautoitem_idx==-1 for the underlying envelope, 0 for the first automation item on the envelope, etc. See GetEnvelopePoint, InsertEnvelopePoint, GetEnvelopeScalingMode.
4940
4941 bool (*SetEnvelopePointEx)(TrackEnvelope* envelope, int autoitem_idx, int ptidx, double* timeInOptional, double* valueInOptional, int* shapeInOptional, double* tensionInOptional, bool* selectedInOptional, bool* noSortInOptional);
4942#endif
4943
4944#if defined(REAPERAPI_WANT_SetEnvelopeStateChunk) || !defined(REAPERAPI_MINIMAL)
4945REAPERAPI_DEF //==============================================
4946// SetEnvelopeStateChunk
4947// Sets the RPPXML state of an envelope, returns true if successful. Undo flag is a performance/caching hint.
4948
4949 bool (*SetEnvelopeStateChunk)(TrackEnvelope* env, const char* str, bool isundoOptional);
4950#endif
4951
4952#if defined(REAPERAPI_WANT_SetExtState) || !defined(REAPERAPI_MINIMAL)
4953REAPERAPI_DEF //==============================================
4954// SetExtState
4955// 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.
4956
4957 void (*SetExtState)(const char* section, const char* key, const char* value, bool persist);
4958#endif
4959
4960#if defined(REAPERAPI_WANT_SetGlobalAutomationOverride) || !defined(REAPERAPI_MINIMAL)
4961REAPERAPI_DEF //==============================================
4962// SetGlobalAutomationOverride
4963// mode: see GetGlobalAutomationOverride
4964
4965 void (*SetGlobalAutomationOverride)(int mode);
4966#endif
4967
4968#if defined(REAPERAPI_WANT_SetItemStateChunk) || !defined(REAPERAPI_MINIMAL)
4969REAPERAPI_DEF //==============================================
4970// SetItemStateChunk
4971// Sets the RPPXML state of an item, returns true if successful. Undo flag is a performance/caching hint.
4972
4973 bool (*SetItemStateChunk)(MediaItem* item, const char* str, bool isundoOptional);
4974#endif
4975
4976#if defined(REAPERAPI_WANT_SetMasterTrackVisibility) || !defined(REAPERAPI_MINIMAL)
4977REAPERAPI_DEF //==============================================
4978// SetMasterTrackVisibility
4979// set &1 to show the master track in the TCP, &2 to show in the mixer. Returns the previous visibility state. See GetMasterTrackVisibility.
4980
4981 int (*SetMasterTrackVisibility)(int flag);
4982#endif
4983
4984#if defined(REAPERAPI_WANT_SetMediaItemInfo_Value) || !defined(REAPERAPI_MINIMAL)
4985REAPERAPI_DEF //==============================================
4986// SetMediaItemInfo_Value
4987// Set media item numerical-value attributes.
4988// B_MUTE : bool * to muted state
4989// B_LOOPSRC : bool * to loop source
4990// B_ALLTAKESPLAY : bool * to all takes play
4991// B_UISEL : bool * to ui selected
4992// C_BEATATTACHMODE : char * to one char of beat attached mode, -1=def, 0=time, 1=allbeats, 2=beatsosonly
4993// C_LOCK : char * to one char of lock flags (&1 is locked, currently)
4994// D_VOL : double * of item volume (volume bar)
4995// D_POSITION : double * of item position (seconds)
4996// D_LENGTH : double * of item length (seconds)
4997// D_SNAPOFFSET : double * of item snap offset (seconds)
4998// D_FADEINLEN : double * of item fade in length (manual, seconds)
4999// D_FADEOUTLEN : double * of item fade out length (manual, seconds)
5000// D_FADEINDIR : double * of item fade in curve [-1; 1]
5001// D_FADEOUTDIR : double * of item fade out curve [-1; 1]
5002// D_FADEINLEN_AUTO : double * of item autofade in length (seconds, -1 for no autofade set)
5003// D_FADEOUTLEN_AUTO : double * of item autofade out length (seconds, -1 for no autofade set)
5004// C_FADEINSHAPE : int * to fadein shape, 0=linear, ...
5005// C_FADEOUTSHAPE : int * to fadeout shape
5006// I_GROUPID : int * to group ID (0 = no group)
5007// I_LASTY : int * to last y position in track (readonly)
5008// I_LASTH : int * to last height in track (readonly)
5009// 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).
5010// I_CURTAKE : int * to active take
5011// IP_ITEMNUMBER : int, item number within the track (read-only, returns the item number directly)
5012// F_FREEMODE_Y : float * to free mode y position (0..1)
5013// F_FREEMODE_H : float * to free mode height (0..1)
5014
5015 bool (*SetMediaItemInfo_Value)(MediaItem* item, const char* parmname, double newvalue);
5016#endif
5017
5018#if defined(REAPERAPI_WANT_SetMediaItemLength) || !defined(REAPERAPI_MINIMAL)
5019REAPERAPI_DEF //==============================================
5020// SetMediaItemLength
5021// Redraws the screen only if refreshUI == true.
5022// See UpdateArrange().
5023
5024 bool (*SetMediaItemLength)(MediaItem* item, double length, bool refreshUI);
5025#endif
5026
5027#if defined(REAPERAPI_WANT_SetMediaItemPosition) || !defined(REAPERAPI_MINIMAL)
5028REAPERAPI_DEF //==============================================
5029// SetMediaItemPosition
5030// Redraws the screen only if refreshUI == true.
5031// See UpdateArrange().
5032
5033 bool (*SetMediaItemPosition)(MediaItem* item, double position, bool refreshUI);
5034#endif
5035
5036#if defined(REAPERAPI_WANT_SetMediaItemSelected) || !defined(REAPERAPI_MINIMAL)
5037REAPERAPI_DEF //==============================================
5038// SetMediaItemSelected
5039
5040 void (*SetMediaItemSelected)(MediaItem* item, bool selected);
5041#endif
5042
5043#if defined(REAPERAPI_WANT_SetMediaItemTake_Source) || !defined(REAPERAPI_MINIMAL)
5044REAPERAPI_DEF //==============================================
5045// SetMediaItemTake_Source
5046// Set media source of media item take
5047
5048 bool (*SetMediaItemTake_Source)(MediaItem_Take* take, PCM_source* source);
5049#endif
5050
5051#if defined(REAPERAPI_WANT_SetMediaItemTakeInfo_Value) || !defined(REAPERAPI_MINIMAL)
5052REAPERAPI_DEF //==============================================
5053// SetMediaItemTakeInfo_Value
5054// Set media item take numerical-value attributes.
5055// D_STARTOFFS : double *, start offset in take of item
5056// D_VOL : double *, take volume
5057// D_PAN : double *, take pan
5058// D_PANLAW : double *, take pan law (-1.0=default, 0.5=-6dB, 1.0=+0dB, etc)
5059// D_PLAYRATE : double *, take playrate (1.0=normal, 2.0=doublespeed, etc)
5060// D_PITCH : double *, take pitch adjust (in semitones, 0.0=normal, +12 = one octave up, etc)
5061// B_PPITCH, bool *, preserve pitch when changing rate
5062// I_CHANMODE, int *, channel mode (0=normal, 1=revstereo, 2=downmix, 3=l, 4=r)
5063// I_PITCHMODE, int *, pitch shifter mode, -1=proj default, otherwise high word=shifter low word = parameter
5064// 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).
5065// IP_TAKENUMBER : int, take number within the item (read-only, returns the take number directly)
5066
5067 bool (*SetMediaItemTakeInfo_Value)(MediaItem_Take* take, const char* parmname, double newvalue);
5068#endif
5069
5070#if defined(REAPERAPI_WANT_SetMediaTrackInfo_Value) || !defined(REAPERAPI_MINIMAL)
5071REAPERAPI_DEF //==============================================
5072// SetMediaTrackInfo_Value
5073// Set track numerical-value attributes.
5074// B_MUTE : bool * : mute flag
5075// B_PHASE : bool * : invert track phase
5076// IP_TRACKNUMBER : int : track number (returns zero if not found, -1 for master track) (read-only, returns the int directly)
5077// I_SOLO : int * : 0=not soloed, 1=solo, 2=soloed in place
5078// I_FXEN : int * : 0=fx bypassed, nonzero = fx active
5079// I_RECARM : int * : 0=not record armed, 1=record armed
5080// 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)
5081// 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
5082// I_RECMON : int * : record monitor (0=off, 1=normal, 2=not when playing (tapestyle))
5083// I_RECMONITEMS : int * : monitor items while recording (0=off, 1=on)
5084// I_AUTOMODE : int * : track automation mode (0=trim/off, 1=read, 2=touch, 3=write, 4=latch)
5085// I_NCHAN : int * : number of track channels, must be 2-64, even
5086// I_SELECTED : int * : track selected? 0 or 1
5087// I_WNDH : int * : current TCP window height (Read-only)
5088// 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
5089// I_FOLDERCOMPACT : int * : folder compacting (only valid on folders), 0=normal, 1=small, 2=tiny children
5090// 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))
5091// I_PERFFLAGS : int * : track perf flags (&1=no media buffering, &2=no anticipative FX)
5092// 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).
5093// I_HEIGHTOVERRIDE : int * : custom height override for TCP window. 0 for none, otherwise size in pixels
5094// D_VOL : double * : trim volume of track (0 (-inf)..1 (+0dB) .. 2 (+6dB) etc ..)
5095// D_PAN : double * : trim pan of track (-1..1)
5096// D_WIDTH : double * : width of track (-1..1)
5097// D_DUALPANL : double * : dualpan position 1 (-1..1), only if I_PANMODE==6
5098// D_DUALPANR : double * : dualpan position 2 (-1..1), only if I_PANMODE==6
5099// I_PANMODE : int * : pan mode (0 = classic 3.x, 3=new balance, 5=stereo pan, 6 = dual pan)
5100// D_PANLAW : double * : pan law of track. <0 for project default, 1.0 for +0dB, etc
5101// P_ENV : read only, returns TrackEnvelope *, setNewValue=<VOLENV, <PANENV, etc
5102// B_SHOWINMIXER : bool * : show track panel in mixer -- do not use on master
5103// B_SHOWINTCP : bool * : show track panel in tcp -- do not use on master
5104// B_MAINSEND : bool * : track sends audio to parent
5105// C_MAINSEND_OFFS : char * : track send to parent channel offset
5106// B_FREEMODE : bool * : track free-mode enabled (requires UpdateTimeline() after changing etc)
5107// C_BEATATTACHMODE : char * : char * to one char of beat attached mode, -1=def, 0=time, 1=allbeats, 2=beatsposonly
5108// F_MCP_FXSEND_SCALE : float * : scale of fx+send area in MCP (0.0=smallest allowed, 1=max allowed)
5109// F_MCP_SENDRGN_SCALE : float * : scale of send area as proportion of the fx+send total area (0=min allow, 1=max)
5110
5111 bool (*SetMediaTrackInfo_Value)(MediaTrack* tr, const char* parmname, double newvalue);
5112#endif
5113
5114#if defined(REAPERAPI_WANT_SetMIDIEditorGrid) || !defined(REAPERAPI_MINIMAL)
5115REAPERAPI_DEF //==============================================
5116// SetMIDIEditorGrid
5117// Set the MIDI editor grid division. 0.25=quarter note, 1.0/3.0=half note tripet, etc.
5118
5119 void (*SetMIDIEditorGrid)(ReaProject* project, double division);
5120#endif
5121
5122#if defined(REAPERAPI_WANT_SetMixerScroll) || !defined(REAPERAPI_MINIMAL)
5123REAPERAPI_DEF //==============================================
5124// SetMixerScroll
5125// 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.
5126
5127 MediaTrack* (*SetMixerScroll)(MediaTrack* leftmosttrack);
5128#endif
5129
5130#if defined(REAPERAPI_WANT_SetMouseModifier) || !defined(REAPERAPI_MINIMAL)
5131REAPERAPI_DEF //==============================================
5132// SetMouseModifier
5133// Set the mouse modifier assignment for a specific modifier key assignment, in a specific context.
5134// Context is a string like "MM_CTX_ITEM". Find these strings by modifying an assignment in
5135// Preferences/Editing/Mouse Modifiers, then looking in reaper-mouse.ini.
5136// Modifier flag is a number from 0 to 15: add 1 for shift, 2 for control, 4 for alt, 8 for win.
5137// (macOS: add 1 for shift, 2 for command, 4 for opt, 8 for control.)
5138// For left-click and double-click contexts, the action can be any built-in command ID number
5139// or any custom action ID string. Find built-in command IDs in the REAPER actions window
5140// (enable "show action IDs" in the context menu), and find custom action ID strings in reaper-kb.ini.
5141// For built-in mouse modifier behaviors, find action IDs (which will be low numbers)
5142// by modifying an assignment in Preferences/Editing/Mouse Modifiers, then looking in reaper-mouse.ini.
5143// Assigning an action of -1 will reset that mouse modifier behavior to factory default.
5144// See GetMouseModifier.
5145//
5146
5147 void (*SetMouseModifier)(const char* context, int modifier_flag, const char* action);
5148#endif
5149
5150#if defined(REAPERAPI_WANT_SetOnlyTrackSelected) || !defined(REAPERAPI_MINIMAL)
5151REAPERAPI_DEF //==============================================
5152// SetOnlyTrackSelected
5153// Set exactly one track selected, deselect all others
5154
5155 void (*SetOnlyTrackSelected)(MediaTrack* track);
5156#endif
5157
5158#if defined(REAPERAPI_WANT_SetProjectGrid) || !defined(REAPERAPI_MINIMAL)
5159REAPERAPI_DEF //==============================================
5160// SetProjectGrid
5161// Set the arrange view grid division. 0.25=quarter note, 1.0/3.0=half note triplet, etc.
5162
5163 void (*SetProjectGrid)(ReaProject* project, double division);
5164#endif
5165
5166#if defined(REAPERAPI_WANT_SetProjectMarker) || !defined(REAPERAPI_MINIMAL)
5167REAPERAPI_DEF //==============================================
5168// SetProjectMarker
5169
5170 bool (*SetProjectMarker)(int markrgnindexnumber, bool isrgn, double pos, double rgnend, const char* name);
5171#endif
5172
5173#if defined(REAPERAPI_WANT_SetProjectMarker2) || !defined(REAPERAPI_MINIMAL)
5174REAPERAPI_DEF //==============================================
5175// SetProjectMarker2
5176
5177 bool (*SetProjectMarker2)(ReaProject* proj, int markrgnindexnumber, bool isrgn, double pos, double rgnend, const char* name);
5178#endif
5179
5180#if defined(REAPERAPI_WANT_SetProjectMarker3) || !defined(REAPERAPI_MINIMAL)
5181REAPERAPI_DEF //==============================================
5182// SetProjectMarker3
5183
5184 bool (*SetProjectMarker3)(ReaProject* proj, int markrgnindexnumber, bool isrgn, double pos, double rgnend, const char* name, int color);
5185#endif
5186
5187#if defined(REAPERAPI_WANT_SetProjectMarker4) || !defined(REAPERAPI_MINIMAL)
5188REAPERAPI_DEF //==============================================
5189// SetProjectMarker4
5190// color should be 0 to not change, or ColorToNative(r,g,b)|0x1000000, flags&1 to clear name
5191
5192 bool (*SetProjectMarker4)(ReaProject* proj, int markrgnindexnumber, bool isrgn, double pos, double rgnend, const char* name, int color, int flags);
5193#endif
5194
5195#if defined(REAPERAPI_WANT_SetProjectMarkerByIndex) || !defined(REAPERAPI_MINIMAL)
5196REAPERAPI_DEF //==============================================
5197// SetProjectMarkerByIndex
5198// See SetProjectMarkerByIndex2.
5199
5200 bool (*SetProjectMarkerByIndex)(ReaProject* proj, int markrgnidx, bool isrgn, double pos, double rgnend, int IDnumber, const char* name, int color);
5201#endif
5202
5203#if defined(REAPERAPI_WANT_SetProjectMarkerByIndex2) || !defined(REAPERAPI_MINIMAL)
5204REAPERAPI_DEF //==============================================
5205// SetProjectMarkerByIndex2
5206// 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.
5207
5208 bool (*SetProjectMarkerByIndex2)(ReaProject* proj, int markrgnidx, bool isrgn, double pos, double rgnend, int IDnumber, const char* name, int color, int flags);
5209#endif
5210
5211#if defined(REAPERAPI_WANT_SetProjExtState) || !defined(REAPERAPI_MINIMAL)
5212REAPERAPI_DEF //==============================================
5213// SetProjExtState
5214// 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.
5215
5216 int (*SetProjExtState)(ReaProject* proj, const char* extname, const char* key, const char* value);
5217#endif
5218
5219#if defined(REAPERAPI_WANT_SetRegionRenderMatrix) || !defined(REAPERAPI_MINIMAL)
5220REAPERAPI_DEF //==============================================
5221// SetRegionRenderMatrix
5222// Add (addorremove > 0) or remove (addorremove < 0) a track from this region when using the region render matrix.
5223
5224 void (*SetRegionRenderMatrix)(ReaProject* proj, int regionindex, MediaTrack* track, int addorremove);
5225#endif
5226
5227#if defined(REAPERAPI_WANT_SetRenderLastError) || !defined(REAPERAPI_MINIMAL)
5228REAPERAPI_DEF //==============================================
5229// SetRenderLastError
5230// Used by pcmsink objects to set an error to display while creating the pcmsink object.
5231
5232 void (*SetRenderLastError)(const char* errorstr);
5233#endif
5234
5235#if defined(REAPERAPI_WANT_SetTakeStretchMarker) || !defined(REAPERAPI_MINIMAL)
5236REAPERAPI_DEF //==============================================
5237// SetTakeStretchMarker
5238// 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).
5239
5240 int (*SetTakeStretchMarker)(MediaItem_Take* take, int idx, double pos, const double* srcposInOptional);
5241#endif
5242
5243#if defined(REAPERAPI_WANT_SetTakeStretchMarkerSlope) || !defined(REAPERAPI_MINIMAL)
5244REAPERAPI_DEF //==============================================
5245// SetTakeStretchMarkerSlope
5246// See GetTakeStretchMarkerSlope
5247
5248 bool (*SetTakeStretchMarkerSlope)(MediaItem_Take* take, int idx, double slope);
5249#endif
5250
5251#if defined(REAPERAPI_WANT_SetTempoTimeSigMarker) || !defined(REAPERAPI_MINIMAL)
5252REAPERAPI_DEF //==============================================
5253// SetTempoTimeSigMarker
5254// 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.
5255
5256 bool (*SetTempoTimeSigMarker)(ReaProject* proj, int ptidx, double timepos, int measurepos, double beatpos, double bpm, int timesig_num, int timesig_denom, bool lineartempo);
5257#endif
5258
5259#if defined(REAPERAPI_WANT_SetToggleCommandState) || !defined(REAPERAPI_MINIMAL)
5260REAPERAPI_DEF //==============================================
5261// SetToggleCommandState
5262// Updates the toggle state of an action, returns true if succeeded. Only ReaScripts can have their toggle states changed programmatically. See RefreshToolbar2.
5263
5264 bool (*SetToggleCommandState)(int section_id, int command_id, int state);
5265#endif
5266
5267#if defined(REAPERAPI_WANT_SetTrackAutomationMode) || !defined(REAPERAPI_MINIMAL)
5268REAPERAPI_DEF //==============================================
5269// SetTrackAutomationMode
5270
5271 void (*SetTrackAutomationMode)(MediaTrack* tr, int mode);
5272#endif
5273
5274#if defined(REAPERAPI_WANT_SetTrackColor) || !defined(REAPERAPI_MINIMAL)
5275REAPERAPI_DEF //==============================================
5276// SetTrackColor
5277// Set the custom track color, color is OS dependent (i.e. ColorToNative(r,g,b).
5278
5279 void (*SetTrackColor)(MediaTrack* track, int color);
5280#endif
5281
5282#if defined(REAPERAPI_WANT_SetTrackMIDILyrics) || !defined(REAPERAPI_MINIMAL)
5283REAPERAPI_DEF //==============================================
5284// SetTrackMIDILyrics
5285// Set all MIDI lyrics on the track. Lyrics will be stuffed into any MIDI items found in range. Flag is unused at present. str is passed in as beat position, tab, text, tab (example with flag=2: "1.1.2\tLyric for measure 1 beat 2\t.1.1\tLyric for measure 2 beat 1 "). See GetTrackMIDILyrics
5286
5287 bool (*SetTrackMIDILyrics)(MediaTrack* track, int flag, const char* str);
5288#endif
5289
5290#if defined(REAPERAPI_WANT_SetTrackMIDINoteName) || !defined(REAPERAPI_MINIMAL)
5291REAPERAPI_DEF //==============================================
5292// SetTrackMIDINoteName
5293// channel < 0 assigns these note names to all channels.
5294
5295 bool (*SetTrackMIDINoteName)(int track, int pitch, int chan, const char* name);
5296#endif
5297
5298#if defined(REAPERAPI_WANT_SetTrackMIDINoteNameEx) || !defined(REAPERAPI_MINIMAL)
5299REAPERAPI_DEF //==============================================
5300// SetTrackMIDINoteNameEx
5301// channel < 0 assigns note name to all channels. pitch 128 assigns name for CC0, pitch 129 for CC1, etc.
5302
5303 bool (*SetTrackMIDINoteNameEx)(ReaProject* proj, MediaTrack* track, int pitch, int chan, const char* name);
5304#endif
5305
5306#if defined(REAPERAPI_WANT_SetTrackSelected) || !defined(REAPERAPI_MINIMAL)
5307REAPERAPI_DEF //==============================================
5308// SetTrackSelected
5309
5310 void (*SetTrackSelected)(MediaTrack* track, bool selected);
5311#endif
5312
5313#if defined(REAPERAPI_WANT_SetTrackSendInfo_Value) || !defined(REAPERAPI_MINIMAL)
5314REAPERAPI_DEF //==============================================
5315// SetTrackSendInfo_Value
5316// Set send/receive/hardware output numerical-value attributes, return true on success.
5317// category is <0 for receives, 0=sends, >0 for hardware outputs
5318// parameter names:
5319// B_MUTE : returns bool *
5320// B_PHASE : returns bool *, true to flip phase
5321// B_MONO : returns bool *
5322// D_VOL : returns double *, 1.0 = +0dB etc
5323// D_PAN : returns double *, -1..+1
5324// D_PANLAW : returns double *,1.0=+0.0db, 0.5=-6dB, -1.0 = projdef etc
5325// I_SENDMODE : returns int *, 0=post-fader, 1=pre-fx, 2=post-fx (deprecated), 3=post-fx
5326// I_AUTOMODE : returns int * : automation mode (-1=use track automode, 0=trim/off, 1=read, 2=touch, 3=write, 4=latch)
5327// I_SRCCHAN : returns int *, index,&1024=mono, -1 for none
5328// I_DSTCHAN : returns int *, index, &1024=mono, otherwise stereo pair, hwout:&512=rearoute
5329// I_MIDIFLAGS : returns int *, low 5 bits=source channel 0=all, 1-16, next 5 bits=dest channel, 0=orig, 1-16=chan
5330// See CreateTrackSend, RemoveTrackSend, GetTrackNumSends.
5331
5332 bool (*SetTrackSendInfo_Value)(MediaTrack* tr, int category, int sendidx, const char* parmname, double newvalue);
5333#endif
5334
5335#if defined(REAPERAPI_WANT_SetTrackSendUIPan) || !defined(REAPERAPI_MINIMAL)
5336REAPERAPI_DEF //==============================================
5337// SetTrackSendUIPan
5338// send_idx<0 for receives, >=0 for hw ouputs, >=nb_of_hw_ouputs for sends. isend=1 for end of edit, -1 for an instant edit (such as reset), 0 for normal tweak.
5339
5340 bool (*SetTrackSendUIPan)(MediaTrack* track, int send_idx, double pan, int isend);
5341#endif
5342
5343#if defined(REAPERAPI_WANT_SetTrackSendUIVol) || !defined(REAPERAPI_MINIMAL)
5344REAPERAPI_DEF //==============================================
5345// SetTrackSendUIVol
5346// send_idx<0 for receives, >=0 for hw ouputs, >=nb_of_hw_ouputs for sends. isend=1 for end of edit, -1 for an instant edit (such as reset), 0 for normal tweak.
5347
5348 bool (*SetTrackSendUIVol)(MediaTrack* track, int send_idx, double vol, int isend);
5349#endif
5350
5351#if defined(REAPERAPI_WANT_SetTrackStateChunk) || !defined(REAPERAPI_MINIMAL)
5352REAPERAPI_DEF //==============================================
5353// SetTrackStateChunk
5354// Sets the RPPXML state of a track, returns true if successful. Undo flag is a performance/caching hint.
5355
5356 bool (*SetTrackStateChunk)(MediaTrack* track, const char* str, bool isundoOptional);
5357#endif
5358
5359#if defined(REAPERAPI_WANT_ShowActionList) || !defined(REAPERAPI_MINIMAL)
5360REAPERAPI_DEF //==============================================
5361// ShowActionList
5362
5363 void (*ShowActionList)(KbdSectionInfo* caller, HWND callerWnd);
5364#endif
5365
5366#if defined(REAPERAPI_WANT_ShowConsoleMsg) || !defined(REAPERAPI_MINIMAL)
5367REAPERAPI_DEF //==============================================
5368// ShowConsoleMsg
5369// Show a message to the user (also useful for debugging). Send "\n" for newline, "" to clear the console. See ClearConsole
5370
5371 void (*ShowConsoleMsg)(const char* msg);
5372#endif
5373
5374#if defined(REAPERAPI_WANT_ShowMessageBox) || !defined(REAPERAPI_MINIMAL)
5375REAPERAPI_DEF //==============================================
5376// ShowMessageBox
5377// 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
5378
5379 int (*ShowMessageBox)(const char* msg, const char* title, int type);
5380#endif
5381
5382#if defined(REAPERAPI_WANT_SLIDER2DB) || !defined(REAPERAPI_MINIMAL)
5383REAPERAPI_DEF //==============================================
5384// SLIDER2DB
5385
5386 double (*SLIDER2DB)(double y);
5387#endif
5388
5389#if defined(REAPERAPI_WANT_SnapToGrid) || !defined(REAPERAPI_MINIMAL)
5390REAPERAPI_DEF //==============================================
5391// SnapToGrid
5392
5393 double (*SnapToGrid)(ReaProject* project, double time_pos);
5394#endif
5395
5396#if defined(REAPERAPI_WANT_SoloAllTracks) || !defined(REAPERAPI_MINIMAL)
5397REAPERAPI_DEF //==============================================
5398// SoloAllTracks
5399// solo=2 for SIP
5400
5401 void (*SoloAllTracks)(int solo);
5402#endif
5403
5404#if defined(REAPERAPI_WANT_Splash_GetWnd) || !defined(REAPERAPI_MINIMAL)
5405REAPERAPI_DEF //==============================================
5406// Splash_GetWnd
5407// gets the splash window, in case you want to display a message over it. Returns NULL when the sphah window is not displayed.
5408
5409 HWND (*Splash_GetWnd)();
5410#endif
5411
5412#if defined(REAPERAPI_WANT_SplitMediaItem) || !defined(REAPERAPI_MINIMAL)
5413REAPERAPI_DEF //==============================================
5414// SplitMediaItem
5415// the original item becomes the left-hand split, the function returns the right-hand split (or NULL if the split failed)
5416
5417 MediaItem* (*SplitMediaItem)(MediaItem* item, double position);
5418#endif
5419
5420#if defined(REAPERAPI_WANT_StopPreview) || !defined(REAPERAPI_MINIMAL)
5421REAPERAPI_DEF //==============================================
5422// StopPreview
5423// return nonzero on success
5424
5425 int (*StopPreview)(preview_register_t* preview);
5426#endif
5427
5428#if defined(REAPERAPI_WANT_StopTrackPreview) || !defined(REAPERAPI_MINIMAL)
5429REAPERAPI_DEF //==============================================
5430// StopTrackPreview
5431// return nonzero on success
5432
5433 int (*StopTrackPreview)(preview_register_t* preview);
5434#endif
5435
5436#if defined(REAPERAPI_WANT_StopTrackPreview2) || !defined(REAPERAPI_MINIMAL)
5437REAPERAPI_DEF //==============================================
5438// StopTrackPreview2
5439// return nonzero on success
5440
5441 int (*StopTrackPreview2)(void* proj, preview_register_t* preview);
5442#endif
5443
5444#if defined(REAPERAPI_WANT_stringToGuid) || !defined(REAPERAPI_MINIMAL)
5445REAPERAPI_DEF //==============================================
5446// stringToGuid
5447
5448 void (*stringToGuid)(const char* str, GUID* g);
5449#endif
5450
5451#if defined(REAPERAPI_WANT_StuffMIDIMessage) || !defined(REAPERAPI_MINIMAL)
5452REAPERAPI_DEF //==============================================
5453// StuffMIDIMessage
5454// 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; 16 for external MIDI device 0, 17 for external MIDI device 1, etc; see GetNumMIDIOutputs, GetMIDIOutputName.
5455
5456 void (*StuffMIDIMessage)(int mode, int msg1, int msg2, int msg3);
5457#endif
5458
5459#if defined(REAPERAPI_WANT_TakeFX_AddByName) || !defined(REAPERAPI_MINIMAL)
5460REAPERAPI_DEF //==============================================
5461// TakeFX_AddByName
5462// Adds or queries the position of a named FX in a take. Specify a negative value for instantiate to always create a new effect, 0 to only query the first instance of an effect, or a positive value to add an instance if one is not found.
5463
5464 int (*TakeFX_AddByName)(MediaItem_Take* take, const char* fxname, int instantiate);
5465#endif
5466
5467#if defined(REAPERAPI_WANT_TakeFX_EndParamEdit) || !defined(REAPERAPI_MINIMAL)
5468REAPERAPI_DEF //==============================================
5469// TakeFX_EndParamEdit
5470
5471 bool (*TakeFX_EndParamEdit)(MediaItem_Take* take, int fx, int param);
5472#endif
5473
5474#if defined(REAPERAPI_WANT_TakeFX_FormatParamValue) || !defined(REAPERAPI_MINIMAL)
5475REAPERAPI_DEF //==============================================
5476// TakeFX_FormatParamValue
5477// Note: only works with FX that support Cockos VST extensions.
5478
5479 bool (*TakeFX_FormatParamValue)(MediaItem_Take* take, int fx, int param, double val, char* buf, int buf_sz);
5480#endif
5481
5482#if defined(REAPERAPI_WANT_TakeFX_FormatParamValueNormalized) || !defined(REAPERAPI_MINIMAL)
5483REAPERAPI_DEF //==============================================
5484// TakeFX_FormatParamValueNormalized
5485// Note: only works with FX that support Cockos VST extensions.
5486
5487 bool (*TakeFX_FormatParamValueNormalized)(MediaItem_Take* take, int fx, int param, double value, char* buf, int buf_sz);
5488#endif
5489
5490#if defined(REAPERAPI_WANT_TakeFX_GetChainVisible) || !defined(REAPERAPI_MINIMAL)
5491REAPERAPI_DEF //==============================================
5492// TakeFX_GetChainVisible
5493// returns index of effect visible in chain, or -1 for chain hidden, or -2 for chain visible but no effect selected
5494
5495 int (*TakeFX_GetChainVisible)(MediaItem_Take* take);
5496#endif
5497
5498#if defined(REAPERAPI_WANT_TakeFX_GetCount) || !defined(REAPERAPI_MINIMAL)
5499REAPERAPI_DEF //==============================================
5500// TakeFX_GetCount
5501
5502 int (*TakeFX_GetCount)(MediaItem_Take* take);
5503#endif
5504
5505#if defined(REAPERAPI_WANT_TakeFX_GetEnabled) || !defined(REAPERAPI_MINIMAL)
5506REAPERAPI_DEF //==============================================
5507// TakeFX_GetEnabled
5508// See TakeFX_SetEnabled
5509
5510 bool (*TakeFX_GetEnabled)(MediaItem_Take* take, int fx);
5511#endif
5512
5513#if defined(REAPERAPI_WANT_TakeFX_GetEnvelope) || !defined(REAPERAPI_MINIMAL)
5514REAPERAPI_DEF //==============================================
5515// TakeFX_GetEnvelope
5516// Returns the FX parameter envelope. If the envelope does not exist and create=true, the envelope will be created.
5517
5518 TrackEnvelope* (*TakeFX_GetEnvelope)(MediaItem_Take* take, int fxindex, int parameterindex, bool create);
5519#endif
5520
5521#if defined(REAPERAPI_WANT_TakeFX_GetFloatingWindow) || !defined(REAPERAPI_MINIMAL)
5522REAPERAPI_DEF //==============================================
5523// TakeFX_GetFloatingWindow
5524// returns HWND of floating window for effect index, if any
5525
5526 HWND (*TakeFX_GetFloatingWindow)(MediaItem_Take* take, int index);
5527#endif
5528
5529#if defined(REAPERAPI_WANT_TakeFX_GetFormattedParamValue) || !defined(REAPERAPI_MINIMAL)
5530REAPERAPI_DEF //==============================================
5531// TakeFX_GetFormattedParamValue
5532
5533 bool (*TakeFX_GetFormattedParamValue)(MediaItem_Take* take, int fx, int param, char* buf, int buf_sz);
5534#endif
5535
5536#if defined(REAPERAPI_WANT_TakeFX_GetFXGUID) || !defined(REAPERAPI_MINIMAL)
5537REAPERAPI_DEF //==============================================
5538// TakeFX_GetFXGUID
5539
5540 GUID* (*TakeFX_GetFXGUID)(MediaItem_Take* take, int fx);
5541#endif
5542
5543#if defined(REAPERAPI_WANT_TakeFX_GetFXName) || !defined(REAPERAPI_MINIMAL)
5544REAPERAPI_DEF //==============================================
5545// TakeFX_GetFXName
5546
5547 bool (*TakeFX_GetFXName)(MediaItem_Take* take, int fx, char* buf, int buf_sz);
5548#endif
5549
5550#if defined(REAPERAPI_WANT_TakeFX_GetIOSize) || !defined(REAPERAPI_MINIMAL)
5551REAPERAPI_DEF //==============================================
5552// TakeFX_GetIOSize
5553// sets the number of input/output pins for FX if available, returns plug-in type or -1 on error
5554
5555 int (*TakeFX_GetIOSize)(MediaItem_Take* take, int fx, int* inputPinsOutOptional, int* outputPinsOutOptional);
5556#endif
5557
5558#if defined(REAPERAPI_WANT_TakeFX_GetNamedConfigParm) || !defined(REAPERAPI_MINIMAL)
5559REAPERAPI_DEF //==============================================
5560// TakeFX_GetNamedConfigParm
5561// gets plug-in specific named configuration value (returns true on success). see TrackFX_GetNamedConfigParm
5562
5563 bool (*TakeFX_GetNamedConfigParm)(MediaItem_Take* take, int fx, const char* parmname, char* bufOut, int bufOut_sz);
5564#endif
5565
5566#if defined(REAPERAPI_WANT_TakeFX_GetNumParams) || !defined(REAPERAPI_MINIMAL)
5567REAPERAPI_DEF //==============================================
5568// TakeFX_GetNumParams
5569
5570 int (*TakeFX_GetNumParams)(MediaItem_Take* take, int fx);
5571#endif
5572
5573#if defined(REAPERAPI_WANT_TakeFX_GetOpen) || !defined(REAPERAPI_MINIMAL)
5574REAPERAPI_DEF //==============================================
5575// TakeFX_GetOpen
5576// Returns true if this FX UI is open in the FX chain window or a floating window. See TakeFX_SetOpen
5577
5578 bool (*TakeFX_GetOpen)(MediaItem_Take* take, int fx);
5579#endif
5580
5581#if defined(REAPERAPI_WANT_TakeFX_GetParam) || !defined(REAPERAPI_MINIMAL)
5582REAPERAPI_DEF //==============================================
5583// TakeFX_GetParam
5584
5585 double (*TakeFX_GetParam)(MediaItem_Take* take, int fx, int param, double* minvalOut, double* maxvalOut);
5586#endif
5587
5588#if defined(REAPERAPI_WANT_TakeFX_GetParameterStepSizes) || !defined(REAPERAPI_MINIMAL)
5589REAPERAPI_DEF //==============================================
5590// TakeFX_GetParameterStepSizes
5591
5592 bool (*TakeFX_GetParameterStepSizes)(MediaItem_Take* take, int fx, int param, double* stepOut, double* smallstepOut, double* largestepOut, bool* istoggleOut);
5593#endif
5594
5595#if defined(REAPERAPI_WANT_TakeFX_GetParamEx) || !defined(REAPERAPI_MINIMAL)
5596REAPERAPI_DEF //==============================================
5597// TakeFX_GetParamEx
5598
5599 double (*TakeFX_GetParamEx)(MediaItem_Take* take, int fx, int param, double* minvalOut, double* maxvalOut, double* midvalOut);
5600#endif
5601
5602#if defined(REAPERAPI_WANT_TakeFX_GetParamName) || !defined(REAPERAPI_MINIMAL)
5603REAPERAPI_DEF //==============================================
5604// TakeFX_GetParamName
5605
5606 bool (*TakeFX_GetParamName)(MediaItem_Take* take, int fx, int param, char* buf, int buf_sz);
5607#endif
5608
5609#if defined(REAPERAPI_WANT_TakeFX_GetParamNormalized) || !defined(REAPERAPI_MINIMAL)
5610REAPERAPI_DEF //==============================================
5611// TakeFX_GetParamNormalized
5612
5613 double (*TakeFX_GetParamNormalized)(MediaItem_Take* take, int fx, int param);
5614#endif
5615
5616#if defined(REAPERAPI_WANT_TakeFX_GetPinMappings) || !defined(REAPERAPI_MINIMAL)
5617REAPERAPI_DEF //==============================================
5618// TakeFX_GetPinMappings
5619// gets the effective channel mapping bitmask for a particular pin. high32OutOptional will be set to the high 32 bits
5620
5621 int (*TakeFX_GetPinMappings)(MediaItem_Take* tr, int fx, int isOutput, int pin, int* high32OutOptional);
5622#endif
5623
5624#if defined(REAPERAPI_WANT_TakeFX_GetPreset) || !defined(REAPERAPI_MINIMAL)
5625REAPERAPI_DEF //==============================================
5626// TakeFX_GetPreset
5627// Get the name of the preset currently showing in the REAPER dropdown, or the full path to a factory preset file for VST3 plug-ins (.vstpreset). Returns false if the current FX parameters do not exactly match the preset (in other words, if the user loaded the preset but moved the knobs afterward). See TakeFX_SetPreset.
5628
5629 bool (*TakeFX_GetPreset)(MediaItem_Take* take, int fx, char* presetname, int presetname_sz);
5630#endif
5631
5632#if defined(REAPERAPI_WANT_TakeFX_GetPresetIndex) || !defined(REAPERAPI_MINIMAL)
5633REAPERAPI_DEF //==============================================
5634// TakeFX_GetPresetIndex
5635// Returns current preset index, or -1 if error. numberOfPresetsOut will be set to total number of presets available. See TakeFX_SetPresetByIndex
5636
5637 int (*TakeFX_GetPresetIndex)(MediaItem_Take* take, int fx, int* numberOfPresetsOut);
5638#endif
5639
5640#if defined(REAPERAPI_WANT_TakeFX_GetUserPresetFilename) || !defined(REAPERAPI_MINIMAL)
5641REAPERAPI_DEF //==============================================
5642// TakeFX_GetUserPresetFilename
5643
5644 void (*TakeFX_GetUserPresetFilename)(MediaItem_Take* take, int fx, char* fn, int fn_sz);
5645#endif
5646
5647#if defined(REAPERAPI_WANT_TakeFX_NavigatePresets) || !defined(REAPERAPI_MINIMAL)
5648REAPERAPI_DEF //==============================================
5649// TakeFX_NavigatePresets
5650// presetmove==1 activates the next preset, presetmove==-1 activates the previous preset, etc.
5651
5652 bool (*TakeFX_NavigatePresets)(MediaItem_Take* take, int fx, int presetmove);
5653#endif
5654
5655#if defined(REAPERAPI_WANT_TakeFX_SetEnabled) || !defined(REAPERAPI_MINIMAL)
5656REAPERAPI_DEF //==============================================
5657// TakeFX_SetEnabled
5658// See TakeFX_GetEnabled
5659
5660 void (*TakeFX_SetEnabled)(MediaItem_Take* take, int fx, bool enabled);
5661#endif
5662
5663#if defined(REAPERAPI_WANT_TakeFX_SetNamedConfigParm) || !defined(REAPERAPI_MINIMAL)
5664REAPERAPI_DEF //==============================================
5665// TakeFX_SetNamedConfigParm
5666// gets plug-in specific named configuration value (returns true on success)
5667
5668 bool (*TakeFX_SetNamedConfigParm)(MediaItem_Take* take, int fx, const char* parmname, const char* value);
5669#endif
5670
5671#if defined(REAPERAPI_WANT_TakeFX_SetOpen) || !defined(REAPERAPI_MINIMAL)
5672REAPERAPI_DEF //==============================================
5673// TakeFX_SetOpen
5674// Open this FX UI. See TakeFX_GetOpen
5675
5676 void (*TakeFX_SetOpen)(MediaItem_Take* take, int fx, bool open);
5677#endif
5678
5679#if defined(REAPERAPI_WANT_TakeFX_SetParam) || !defined(REAPERAPI_MINIMAL)
5680REAPERAPI_DEF //==============================================
5681// TakeFX_SetParam
5682
5683 bool (*TakeFX_SetParam)(MediaItem_Take* take, int fx, int param, double val);
5684#endif
5685
5686#if defined(REAPERAPI_WANT_TakeFX_SetParamNormalized) || !defined(REAPERAPI_MINIMAL)
5687REAPERAPI_DEF //==============================================
5688// TakeFX_SetParamNormalized
5689
5690 bool (*TakeFX_SetParamNormalized)(MediaItem_Take* take, int fx, int param, double value);
5691#endif
5692
5693#if defined(REAPERAPI_WANT_TakeFX_SetPinMappings) || !defined(REAPERAPI_MINIMAL)
5694REAPERAPI_DEF //==============================================
5695// TakeFX_SetPinMappings
5696// sets the channel mapping bitmask for a particular pin. returns false if unsupported (not all types of plug-ins support this capability)
5697
5698 bool (*TakeFX_SetPinMappings)(MediaItem_Take* tr, int fx, int isOutput, int pin, int low32bits, int hi32bits);
5699#endif
5700
5701#if defined(REAPERAPI_WANT_TakeFX_SetPreset) || !defined(REAPERAPI_MINIMAL)
5702REAPERAPI_DEF //==============================================
5703// TakeFX_SetPreset
5704// Activate a preset with the name shown in the REAPER dropdown. Full paths to .vstpreset files are also supported for VST3 plug-ins. See TakeFX_GetPreset.
5705
5706 bool (*TakeFX_SetPreset)(MediaItem_Take* take, int fx, const char* presetname);
5707#endif
5708
5709#if defined(REAPERAPI_WANT_TakeFX_SetPresetByIndex) || !defined(REAPERAPI_MINIMAL)
5710REAPERAPI_DEF //==============================================
5711// TakeFX_SetPresetByIndex
5712// Sets the preset idx, or the factory preset (idx==-2), or the default user preset (idx==-1). Returns true on success. See TakeFX_GetPresetIndex.
5713
5714 bool (*TakeFX_SetPresetByIndex)(MediaItem_Take* take, int fx, int idx);
5715#endif
5716
5717#if defined(REAPERAPI_WANT_TakeFX_Show) || !defined(REAPERAPI_MINIMAL)
5718REAPERAPI_DEF //==============================================
5719// TakeFX_Show
5720// showflag=0 for hidechain, =1 for show chain(index valid), =2 for hide floating window(index valid), =3 for show floating window (index valid)
5721
5722 void (*TakeFX_Show)(MediaItem_Take* take, int index, int showFlag);
5723#endif
5724
5725#if defined(REAPERAPI_WANT_TakeIsMIDI) || !defined(REAPERAPI_MINIMAL)
5726REAPERAPI_DEF //==============================================
5727// TakeIsMIDI
5728// Returns true if the active take contains MIDI.
5729
5730 bool (*TakeIsMIDI)(MediaItem_Take* take);
5731#endif
5732
5733#if defined(REAPERAPI_WANT_time_precise) || !defined(REAPERAPI_MINIMAL)
5734REAPERAPI_DEF //==============================================
5735// time_precise
5736// Gets a precise system timestamp in seconds
5737
5738 double (*time_precise)();
5739#endif
5740
5741#if defined(REAPERAPI_WANT_TimeMap2_beatsToTime) || !defined(REAPERAPI_MINIMAL)
5742REAPERAPI_DEF //==============================================
5743// TimeMap2_beatsToTime
5744// convert a beat position (or optionally a beats+measures if measures is non-NULL) to time.
5745
5746 double (*TimeMap2_beatsToTime)(ReaProject* proj, double tpos, const int* measuresInOptional);
5747#endif
5748
5749#if defined(REAPERAPI_WANT_TimeMap2_GetDividedBpmAtTime) || !defined(REAPERAPI_MINIMAL)
5750REAPERAPI_DEF //==============================================
5751// TimeMap2_GetDividedBpmAtTime
5752// get the effective BPM at the time (seconds) position (i.e. 2x in /8 signatures)
5753
5754 double (*TimeMap2_GetDividedBpmAtTime)(ReaProject* proj, double time);
5755#endif
5756
5757#if defined(REAPERAPI_WANT_TimeMap2_GetNextChangeTime) || !defined(REAPERAPI_MINIMAL)
5758REAPERAPI_DEF //==============================================
5759// TimeMap2_GetNextChangeTime
5760// when does the next time map (tempo or time sig) change occur
5761
5762 double (*TimeMap2_GetNextChangeTime)(ReaProject* proj, double time);
5763#endif
5764
5765#if defined(REAPERAPI_WANT_TimeMap2_QNToTime) || !defined(REAPERAPI_MINIMAL)
5766REAPERAPI_DEF //==============================================
5767// TimeMap2_QNToTime
5768// converts project QN position to time.
5769
5770 double (*TimeMap2_QNToTime)(ReaProject* proj, double qn);
5771#endif
5772
5773#if defined(REAPERAPI_WANT_TimeMap2_timeToBeats) || !defined(REAPERAPI_MINIMAL)
5774REAPERAPI_DEF //==============================================
5775// TimeMap2_timeToBeats
5776// convert a time into beats.
5777// if measures is non-NULL, measures will be set to the measure count, return value will be beats since measure.
5778// if cml is non-NULL, will be set to current measure length in beats (i.e. time signature numerator)
5779// if fullbeats is non-NULL, and measures is non-NULL, fullbeats will get the full beat count (same value returned if measures is NULL).
5780// if cdenom is non-NULL, will be set to the current time signature denominator.
5781
5782 double (*TimeMap2_timeToBeats)(ReaProject* proj, double tpos, int* measuresOutOptional, int* cmlOutOptional, double* fullbeatsOutOptional, int* cdenomOutOptional);
5783#endif
5784
5785#if defined(REAPERAPI_WANT_TimeMap2_timeToQN) || !defined(REAPERAPI_MINIMAL)
5786REAPERAPI_DEF //==============================================
5787// TimeMap2_timeToQN
5788// converts project time position to QN position.
5789
5790 double (*TimeMap2_timeToQN)(ReaProject* proj, double tpos);
5791#endif
5792
5793#if defined(REAPERAPI_WANT_TimeMap_curFrameRate) || !defined(REAPERAPI_MINIMAL)
5794REAPERAPI_DEF //==============================================
5795// TimeMap_curFrameRate
5796// Gets project framerate, and optionally whether it is drop-frame timecode
5797
5798 double (*TimeMap_curFrameRate)(ReaProject* proj, bool* dropFrameOutOptional);
5799#endif
5800
5801#if defined(REAPERAPI_WANT_TimeMap_GetDividedBpmAtTime) || !defined(REAPERAPI_MINIMAL)
5802REAPERAPI_DEF //==============================================
5803// TimeMap_GetDividedBpmAtTime
5804// get the effective BPM at the time (seconds) position (i.e. 2x in /8 signatures)
5805
5806 double (*TimeMap_GetDividedBpmAtTime)(double time);
5807#endif
5808
5809#if defined(REAPERAPI_WANT_TimeMap_GetMeasureInfo) || !defined(REAPERAPI_MINIMAL)
5810REAPERAPI_DEF //==============================================
5811// TimeMap_GetMeasureInfo
5812// Get the QN position and time signature information for the start of a measure. Return the time in seconds of the measure start.
5813
5814 double (*TimeMap_GetMeasureInfo)(ReaProject* proj, int measure, double* qn_startOut, double* qn_endOut, int* timesig_numOut, int* timesig_denomOut, double* tempoOut);
5815#endif
5816
5817#if defined(REAPERAPI_WANT_TimeMap_GetMetronomePattern) || !defined(REAPERAPI_MINIMAL)
5818REAPERAPI_DEF //==============================================
5819// TimeMap_GetMetronomePattern
5820// 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.
5821
5822 int (*TimeMap_GetMetronomePattern)(ReaProject* proj, double time, char* pattern, int pattern_sz);
5823#endif
5824
5825#if defined(REAPERAPI_WANT_TimeMap_GetTimeSigAtTime) || !defined(REAPERAPI_MINIMAL)
5826REAPERAPI_DEF //==============================================
5827// TimeMap_GetTimeSigAtTime
5828// get the effective time signature and tempo
5829
5830 void (*TimeMap_GetTimeSigAtTime)(ReaProject* proj, double time, int* timesig_numOut, int* timesig_denomOut, double* tempoOut);
5831#endif
5832
5833#if defined(REAPERAPI_WANT_TimeMap_QNToMeasures) || !defined(REAPERAPI_MINIMAL)
5834REAPERAPI_DEF //==============================================
5835// TimeMap_QNToMeasures
5836// Find which measure the given QN position falls in.
5837
5838 int (*TimeMap_QNToMeasures)(ReaProject* proj, double qn, double* qnMeasureStartOutOptional, double* qnMeasureEndOutOptional);
5839#endif
5840
5841#if defined(REAPERAPI_WANT_TimeMap_QNToTime) || !defined(REAPERAPI_MINIMAL)
5842REAPERAPI_DEF //==============================================
5843// TimeMap_QNToTime
5844// converts project QN position to time.
5845
5846 double (*TimeMap_QNToTime)(double qn);
5847#endif
5848
5849#if defined(REAPERAPI_WANT_TimeMap_QNToTime_abs) || !defined(REAPERAPI_MINIMAL)
5850REAPERAPI_DEF //==============================================
5851// TimeMap_QNToTime_abs
5852// 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
5853
5854 double (*TimeMap_QNToTime_abs)(ReaProject* proj, double qn);
5855#endif
5856
5857#if defined(REAPERAPI_WANT_TimeMap_timeToQN) || !defined(REAPERAPI_MINIMAL)
5858REAPERAPI_DEF //==============================================
5859// TimeMap_timeToQN
5860// converts project QN position to time.
5861
5862 double (*TimeMap_timeToQN)(double tpos);
5863#endif
5864
5865#if defined(REAPERAPI_WANT_TimeMap_timeToQN_abs) || !defined(REAPERAPI_MINIMAL)
5866REAPERAPI_DEF //==============================================
5867// TimeMap_timeToQN_abs
5868// 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
5869
5870 double (*TimeMap_timeToQN_abs)(ReaProject* proj, double tpos);
5871#endif
5872
5873#if defined(REAPERAPI_WANT_ToggleTrackSendUIMute) || !defined(REAPERAPI_MINIMAL)
5874REAPERAPI_DEF //==============================================
5875// ToggleTrackSendUIMute
5876// send_idx<0 for receives, >=0 for hw ouputs, >=nb_of_hw_ouputs for sends.
5877
5878 bool (*ToggleTrackSendUIMute)(MediaTrack* track, int send_idx);
5879#endif
5880
5881#if defined(REAPERAPI_WANT_Track_GetPeakHoldDB) || !defined(REAPERAPI_MINIMAL)
5882REAPERAPI_DEF //==============================================
5883// Track_GetPeakHoldDB
5884
5885 double (*Track_GetPeakHoldDB)(MediaTrack* track, int channel, bool clear);
5886#endif
5887
5888#if defined(REAPERAPI_WANT_Track_GetPeakInfo) || !defined(REAPERAPI_MINIMAL)
5889REAPERAPI_DEF //==============================================
5890// Track_GetPeakInfo
5891
5892 double (*Track_GetPeakInfo)(MediaTrack* track, int channel);
5893#endif
5894
5895#if defined(REAPERAPI_WANT_TrackCtl_SetToolTip) || !defined(REAPERAPI_MINIMAL)
5896REAPERAPI_DEF //==============================================
5897// TrackCtl_SetToolTip
5898// displays tooltip at location, or removes if empty string
5899
5900 void (*TrackCtl_SetToolTip)(const char* fmt, int xpos, int ypos, bool topmost);
5901#endif
5902
5903#if defined(REAPERAPI_WANT_TrackFX_AddByName) || !defined(REAPERAPI_MINIMAL)
5904REAPERAPI_DEF //==============================================
5905// TrackFX_AddByName
5906// Adds or queries the position of a named FX from the track FX chain (recFX=false) or record input FX/monitoring FX (recFX=true, monitoring FX are on master track). Specify a negative value for instantiate to always create a new effect, 0 to only query the first instance of an effect, or a positive value to add an instance if one is not found.
5907
5908 int (*TrackFX_AddByName)(MediaTrack* track, const char* fxname, bool recFX, int instantiate);
5909#endif
5910
5911#if defined(REAPERAPI_WANT_TrackFX_EndParamEdit) || !defined(REAPERAPI_MINIMAL)
5912REAPERAPI_DEF //==============================================
5913// TrackFX_EndParamEdit
5914
5915 bool (*TrackFX_EndParamEdit)(MediaTrack* track, int fx, int param);
5916#endif
5917
5918#if defined(REAPERAPI_WANT_TrackFX_FormatParamValue) || !defined(REAPERAPI_MINIMAL)
5919REAPERAPI_DEF //==============================================
5920// TrackFX_FormatParamValue
5921// Note: only works with FX that support Cockos VST extensions.
5922
5923 bool (*TrackFX_FormatParamValue)(MediaTrack* track, int fx, int param, double val, char* buf, int buf_sz);
5924#endif
5925
5926#if defined(REAPERAPI_WANT_TrackFX_FormatParamValueNormalized) || !defined(REAPERAPI_MINIMAL)
5927REAPERAPI_DEF //==============================================
5928// TrackFX_FormatParamValueNormalized
5929// Note: only works with FX that support Cockos VST extensions.
5930
5931 bool (*TrackFX_FormatParamValueNormalized)(MediaTrack* track, int fx, int param, double value, char* buf, int buf_sz);
5932#endif
5933
5934#if defined(REAPERAPI_WANT_TrackFX_GetByName) || !defined(REAPERAPI_MINIMAL)
5935REAPERAPI_DEF //==============================================
5936// TrackFX_GetByName
5937// 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. Deprecated in favor of TrackFX_AddByName.
5938
5939 int (*TrackFX_GetByName)(MediaTrack* track, const char* fxname, bool instantiate);
5940#endif
5941
5942#if defined(REAPERAPI_WANT_TrackFX_GetChainVisible) || !defined(REAPERAPI_MINIMAL)
5943REAPERAPI_DEF //==============================================
5944// TrackFX_GetChainVisible
5945// returns index of effect visible in chain, or -1 for chain hidden, or -2 for chain visible but no effect selected
5946
5947 int (*TrackFX_GetChainVisible)(MediaTrack* track);
5948#endif
5949
5950#if defined(REAPERAPI_WANT_TrackFX_GetCount) || !defined(REAPERAPI_MINIMAL)
5951REAPERAPI_DEF //==============================================
5952// TrackFX_GetCount
5953
5954 int (*TrackFX_GetCount)(MediaTrack* track);
5955#endif
5956
5957#if defined(REAPERAPI_WANT_TrackFX_GetEnabled) || !defined(REAPERAPI_MINIMAL)
5958REAPERAPI_DEF //==============================================
5959// TrackFX_GetEnabled
5960// See TrackFX_SetEnabled
5961
5962 bool (*TrackFX_GetEnabled)(MediaTrack* track, int fx);
5963#endif
5964
5965#if defined(REAPERAPI_WANT_TrackFX_GetEQ) || !defined(REAPERAPI_MINIMAL)
5966REAPERAPI_DEF //==============================================
5967// TrackFX_GetEQ
5968// 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.
5969
5970 int (*TrackFX_GetEQ)(MediaTrack* track, bool instantiate);
5971#endif
5972
5973#if defined(REAPERAPI_WANT_TrackFX_GetEQBandEnabled) || !defined(REAPERAPI_MINIMAL)
5974REAPERAPI_DEF //==============================================
5975// TrackFX_GetEQBandEnabled
5976// Returns true if the EQ band is enabled.
5977// Returns false if the band is disabled, or if track/fxidx is not ReaEQ.
5978// Bandtype: 0=lhipass, 1=loshelf, 2=band, 3=notch, 4=hishelf, 5=lopass.
5979// Bandidx: 0=first band matching bandtype, 1=2nd band matching bandtype, etc.
5980// See TrackFX_GetEQ, TrackFX_GetEQParam, TrackFX_SetEQParam, TrackFX_SetEQBandEnabled.
5981
5982 bool (*TrackFX_GetEQBandEnabled)(MediaTrack* track, int fxidx, int bandtype, int bandidx);
5983#endif
5984
5985#if defined(REAPERAPI_WANT_TrackFX_GetEQParam) || !defined(REAPERAPI_MINIMAL)
5986REAPERAPI_DEF //==============================================
5987// TrackFX_GetEQParam
5988// Returns false if track/fxidx is not ReaEQ.
5989// Bandtype: -1=master gain, 0=lhipass, 1=loshelf, 2=band, 3=notch, 4=hishelf, 5=lopass.
5990// Bandidx (ignored for master gain): 0=first band matching bandtype, 1=2nd band matching bandtype, etc.
5991// Paramtype (ignored for master gain): 0=freq, 1=gain, 2=Q.
5992// See TrackFX_GetEQ, TrackFX_SetEQParam, TrackFX_GetEQBandEnabled, TrackFX_SetEQBandEnabled.
5993
5994 bool (*TrackFX_GetEQParam)(MediaTrack* track, int fxidx, int paramidx, int* bandtypeOut, int* bandidxOut, int* paramtypeOut, double* normvalOut);
5995#endif
5996
5997#if defined(REAPERAPI_WANT_TrackFX_GetFloatingWindow) || !defined(REAPERAPI_MINIMAL)
5998REAPERAPI_DEF //==============================================
5999// TrackFX_GetFloatingWindow
6000// returns HWND of floating window for effect index, if any
6001
6002 HWND (*TrackFX_GetFloatingWindow)(MediaTrack* track, int index);
6003#endif
6004
6005#if defined(REAPERAPI_WANT_TrackFX_GetFormattedParamValue) || !defined(REAPERAPI_MINIMAL)
6006REAPERAPI_DEF //==============================================
6007// TrackFX_GetFormattedParamValue
6008
6009 bool (*TrackFX_GetFormattedParamValue)(MediaTrack* track, int fx, int param, char* buf, int buf_sz);
6010#endif
6011
6012#if defined(REAPERAPI_WANT_TrackFX_GetFXGUID) || !defined(REAPERAPI_MINIMAL)
6013REAPERAPI_DEF //==============================================
6014// TrackFX_GetFXGUID
6015
6016 GUID* (*TrackFX_GetFXGUID)(MediaTrack* track, int fx);
6017#endif
6018
6019#if defined(REAPERAPI_WANT_TrackFX_GetFXName) || !defined(REAPERAPI_MINIMAL)
6020REAPERAPI_DEF //==============================================
6021// TrackFX_GetFXName
6022
6023 bool (*TrackFX_GetFXName)(MediaTrack* track, int fx, char* buf, int buf_sz);
6024#endif
6025
6026#if defined(REAPERAPI_WANT_TrackFX_GetInstrument) || !defined(REAPERAPI_MINIMAL)
6027REAPERAPI_DEF //==============================================
6028// TrackFX_GetInstrument
6029// Get the index of the first track FX insert that is a virtual instrument, or -1 if none. See TrackFX_GetEQ, TrackFX_GetByName.
6030
6031 int (*TrackFX_GetInstrument)(MediaTrack* track);
6032#endif
6033
6034#if defined(REAPERAPI_WANT_TrackFX_GetIOSize) || !defined(REAPERAPI_MINIMAL)
6035REAPERAPI_DEF //==============================================
6036// TrackFX_GetIOSize
6037// sets the number of input/output pins for FX if available, returns plug-in type or -1 on error
6038
6039 int (*TrackFX_GetIOSize)(MediaTrack* track, int fx, int* inputPinsOutOptional, int* outputPinsOutOptional);
6040#endif
6041
6042#if defined(REAPERAPI_WANT_TrackFX_GetNamedConfigParm) || !defined(REAPERAPI_MINIMAL)
6043REAPERAPI_DEF //==============================================
6044// TrackFX_GetNamedConfigParm
6045// gets plug-in specific named configuration value (returns true on success). Special values: 'pdc' returns PDC latency. 'in_pin_0' returns name of first input pin (if available), 'out_pin_0' returns name of first output pin (if available), etc.
6046
6047 bool (*TrackFX_GetNamedConfigParm)(MediaTrack* track, int fx, const char* parmname, char* bufOut, int bufOut_sz);
6048#endif
6049
6050#if defined(REAPERAPI_WANT_TrackFX_GetNumParams) || !defined(REAPERAPI_MINIMAL)
6051REAPERAPI_DEF //==============================================
6052// TrackFX_GetNumParams
6053
6054 int (*TrackFX_GetNumParams)(MediaTrack* track, int fx);
6055#endif
6056
6057#if defined(REAPERAPI_WANT_TrackFX_GetOpen) || !defined(REAPERAPI_MINIMAL)
6058REAPERAPI_DEF //==============================================
6059// TrackFX_GetOpen
6060// Returns true if this FX UI is open in the FX chain window or a floating window. See TrackFX_SetOpen
6061
6062 bool (*TrackFX_GetOpen)(MediaTrack* track, int fx);
6063#endif
6064
6065#if defined(REAPERAPI_WANT_TrackFX_GetParam) || !defined(REAPERAPI_MINIMAL)
6066REAPERAPI_DEF //==============================================
6067// TrackFX_GetParam
6068
6069 double (*TrackFX_GetParam)(MediaTrack* track, int fx, int param, double* minvalOut, double* maxvalOut);
6070#endif
6071
6072#if defined(REAPERAPI_WANT_TrackFX_GetParameterStepSizes) || !defined(REAPERAPI_MINIMAL)
6073REAPERAPI_DEF //==============================================
6074// TrackFX_GetParameterStepSizes
6075
6076 bool (*TrackFX_GetParameterStepSizes)(MediaTrack* track, int fx, int param, double* stepOut, double* smallstepOut, double* largestepOut, bool* istoggleOut);
6077#endif
6078
6079#if defined(REAPERAPI_WANT_TrackFX_GetParamEx) || !defined(REAPERAPI_MINIMAL)
6080REAPERAPI_DEF //==============================================
6081// TrackFX_GetParamEx
6082
6083 double (*TrackFX_GetParamEx)(MediaTrack* track, int fx, int param, double* minvalOut, double* maxvalOut, double* midvalOut);
6084#endif
6085
6086#if defined(REAPERAPI_WANT_TrackFX_GetParamName) || !defined(REAPERAPI_MINIMAL)
6087REAPERAPI_DEF //==============================================
6088// TrackFX_GetParamName
6089
6090 bool (*TrackFX_GetParamName)(MediaTrack* track, int fx, int param, char* buf, int buf_sz);
6091#endif
6092
6093#if defined(REAPERAPI_WANT_TrackFX_GetParamNormalized) || !defined(REAPERAPI_MINIMAL)
6094REAPERAPI_DEF //==============================================
6095// TrackFX_GetParamNormalized
6096
6097 double (*TrackFX_GetParamNormalized)(MediaTrack* track, int fx, int param);
6098#endif
6099
6100#if defined(REAPERAPI_WANT_TrackFX_GetPinMappings) || !defined(REAPERAPI_MINIMAL)
6101REAPERAPI_DEF //==============================================
6102// TrackFX_GetPinMappings
6103// gets the effective channel mapping bitmask for a particular pin. high32OutOptional will be set to the high 32 bits
6104
6105 int (*TrackFX_GetPinMappings)(MediaTrack* tr, int fx, int isOutput, int pin, int* high32OutOptional);
6106#endif
6107
6108#if defined(REAPERAPI_WANT_TrackFX_GetPreset) || !defined(REAPERAPI_MINIMAL)
6109REAPERAPI_DEF //==============================================
6110// TrackFX_GetPreset
6111// 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.
6112
6113 bool (*TrackFX_GetPreset)(MediaTrack* track, int fx, char* presetname, int presetname_sz);
6114#endif
6115
6116#if defined(REAPERAPI_WANT_TrackFX_GetPresetIndex) || !defined(REAPERAPI_MINIMAL)
6117REAPERAPI_DEF //==============================================
6118// TrackFX_GetPresetIndex
6119// Returns current preset index, or -1 if error. numberOfPresetsOut will be set to total number of presets available. See TrackFX_SetPresetByIndex
6120
6121 int (*TrackFX_GetPresetIndex)(MediaTrack* track, int fx, int* numberOfPresetsOut);
6122#endif
6123
6124#if defined(REAPERAPI_WANT_TrackFX_GetRecChainVisible) || !defined(REAPERAPI_MINIMAL)
6125REAPERAPI_DEF //==============================================
6126// TrackFX_GetRecChainVisible
6127// returns index of effect visible in record input chain, or -1 for chain hidden, or -2 for chain visible but no effect selected
6128
6129 int (*TrackFX_GetRecChainVisible)(MediaTrack* track);
6130#endif
6131
6132#if defined(REAPERAPI_WANT_TrackFX_GetRecCount) || !defined(REAPERAPI_MINIMAL)
6133REAPERAPI_DEF //==============================================
6134// TrackFX_GetRecCount
6135// returns count of record input FX. To access record input FX, use a FX indices [0x1000000..0x1000000+n). On the master track, this accesses monitoring FX rather than record input FX.
6136
6137 int (*TrackFX_GetRecCount)(MediaTrack* track);
6138#endif
6139
6140#if defined(REAPERAPI_WANT_TrackFX_GetUserPresetFilename) || !defined(REAPERAPI_MINIMAL)
6141REAPERAPI_DEF //==============================================
6142// TrackFX_GetUserPresetFilename
6143
6144 void (*TrackFX_GetUserPresetFilename)(MediaTrack* track, int fx, char* fn, int fn_sz);
6145#endif
6146
6147#if defined(REAPERAPI_WANT_TrackFX_NavigatePresets) || !defined(REAPERAPI_MINIMAL)
6148REAPERAPI_DEF //==============================================
6149// TrackFX_NavigatePresets
6150// presetmove==1 activates the next preset, presetmove==-1 activates the previous preset, etc.
6151
6152 bool (*TrackFX_NavigatePresets)(MediaTrack* track, int fx, int presetmove);
6153#endif
6154
6155#if defined(REAPERAPI_WANT_TrackFX_SetEnabled) || !defined(REAPERAPI_MINIMAL)
6156REAPERAPI_DEF //==============================================
6157// TrackFX_SetEnabled
6158// See TrackFX_GetEnabled
6159
6160 void (*TrackFX_SetEnabled)(MediaTrack* track, int fx, bool enabled);
6161#endif
6162
6163#if defined(REAPERAPI_WANT_TrackFX_SetEQBandEnabled) || !defined(REAPERAPI_MINIMAL)
6164REAPERAPI_DEF //==============================================
6165// TrackFX_SetEQBandEnabled
6166// Enable or disable a ReaEQ band.
6167// Returns false if track/fxidx is not ReaEQ.
6168// Bandtype: 0=lhipass, 1=loshelf, 2=band, 3=notch, 4=hishelf, 5=lopass.
6169// Bandidx: 0=first band matching bandtype, 1=2nd band matching bandtype, etc.
6170// See TrackFX_GetEQ, TrackFX_GetEQParam, TrackFX_SetEQParam, TrackFX_GetEQBandEnabled.
6171
6172 bool (*TrackFX_SetEQBandEnabled)(MediaTrack* track, int fxidx, int bandtype, int bandidx, bool enable);
6173#endif
6174
6175#if defined(REAPERAPI_WANT_TrackFX_SetEQParam) || !defined(REAPERAPI_MINIMAL)
6176REAPERAPI_DEF //==============================================
6177// TrackFX_SetEQParam
6178// Returns false if track/fxidx is not ReaEQ. Targets a band matching bandtype.
6179// Bandtype: -1=master gain, 0=lhipass, 1=loshelf, 2=band, 3=notch, 4=hishelf, 5=lopass.
6180// Bandidx (ignored for master gain): 0=target first band matching bandtype, 1=target 2nd band matching bandtype, etc.
6181// Paramtype (ignored for master gain): 0=freq, 1=gain, 2=Q.
6182// See TrackFX_GetEQ, TrackFX_GetEQParam, TrackFX_GetEQBandEnabled, TrackFX_SetEQBandEnabled.
6183
6184 bool (*TrackFX_SetEQParam)(MediaTrack* track, int fxidx, int bandtype, int bandidx, int paramtype, double val, bool isnorm);
6185#endif
6186
6187#if defined(REAPERAPI_WANT_TrackFX_SetNamedConfigParm) || !defined(REAPERAPI_MINIMAL)
6188REAPERAPI_DEF //==============================================
6189// TrackFX_SetNamedConfigParm
6190// sets plug-in specific named configuration value (returns true on success)
6191
6192 bool (*TrackFX_SetNamedConfigParm)(MediaTrack* track, int fx, const char* parmname, const char* value);
6193#endif
6194
6195#if defined(REAPERAPI_WANT_TrackFX_SetOpen) || !defined(REAPERAPI_MINIMAL)
6196REAPERAPI_DEF //==============================================
6197// TrackFX_SetOpen
6198// Open this FX UI. See TrackFX_GetOpen
6199
6200 void (*TrackFX_SetOpen)(MediaTrack* track, int fx, bool open);
6201#endif
6202
6203#if defined(REAPERAPI_WANT_TrackFX_SetParam) || !defined(REAPERAPI_MINIMAL)
6204REAPERAPI_DEF //==============================================
6205// TrackFX_SetParam
6206
6207 bool (*TrackFX_SetParam)(MediaTrack* track, int fx, int param, double val);
6208#endif
6209
6210#if defined(REAPERAPI_WANT_TrackFX_SetParamNormalized) || !defined(REAPERAPI_MINIMAL)
6211REAPERAPI_DEF //==============================================
6212// TrackFX_SetParamNormalized
6213
6214 bool (*TrackFX_SetParamNormalized)(MediaTrack* track, int fx, int param, double value);
6215#endif
6216
6217#if defined(REAPERAPI_WANT_TrackFX_SetPinMappings) || !defined(REAPERAPI_MINIMAL)
6218REAPERAPI_DEF //==============================================
6219// TrackFX_SetPinMappings
6220// sets the channel mapping bitmask for a particular pin. returns false if unsupported (not all types of plug-ins support this capability)
6221
6222 bool (*TrackFX_SetPinMappings)(MediaTrack* tr, int fx, int isOutput, int pin, int low32bits, int hi32bits);
6223#endif
6224
6225#if defined(REAPERAPI_WANT_TrackFX_SetPreset) || !defined(REAPERAPI_MINIMAL)
6226REAPERAPI_DEF //==============================================
6227// TrackFX_SetPreset
6228// 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.
6229
6230 bool (*TrackFX_SetPreset)(MediaTrack* track, int fx, const char* presetname);
6231#endif
6232
6233#if defined(REAPERAPI_WANT_TrackFX_SetPresetByIndex) || !defined(REAPERAPI_MINIMAL)
6234REAPERAPI_DEF //==============================================
6235// TrackFX_SetPresetByIndex
6236// Sets the preset idx, or the factory preset (idx==-2), or the default user preset (idx==-1). Returns true on success. See TrackFX_GetPresetIndex.
6237
6238 bool (*TrackFX_SetPresetByIndex)(MediaTrack* track, int fx, int idx);
6239#endif
6240
6241#if defined(REAPERAPI_WANT_TrackFX_Show) || !defined(REAPERAPI_MINIMAL)
6242REAPERAPI_DEF //==============================================
6243// TrackFX_Show
6244// showflag=0 for hidechain, =1 for show chain(index valid), =2 for hide floating window(index valid), =3 for show floating window (index valid)
6245
6246 void (*TrackFX_Show)(MediaTrack* track, int index, int showFlag);
6247#endif
6248
6249#if defined(REAPERAPI_WANT_TrackList_AdjustWindows) || !defined(REAPERAPI_MINIMAL)
6250REAPERAPI_DEF //==============================================
6251// TrackList_AdjustWindows
6252
6253 void (*TrackList_AdjustWindows)(bool isMinor);
6254#endif
6255
6256#if defined(REAPERAPI_WANT_TrackList_UpdateAllExternalSurfaces) || !defined(REAPERAPI_MINIMAL)
6257REAPERAPI_DEF //==============================================
6258// TrackList_UpdateAllExternalSurfaces
6259
6260 void (*TrackList_UpdateAllExternalSurfaces)();
6261#endif
6262
6263#if defined(REAPERAPI_WANT_Undo_BeginBlock) || !defined(REAPERAPI_MINIMAL)
6264REAPERAPI_DEF //==============================================
6265// Undo_BeginBlock
6266// call to start a new block
6267
6268 void (*Undo_BeginBlock)();
6269#endif
6270
6271#if defined(REAPERAPI_WANT_Undo_BeginBlock2) || !defined(REAPERAPI_MINIMAL)
6272REAPERAPI_DEF //==============================================
6273// Undo_BeginBlock2
6274// call to start a new block
6275
6276 void (*Undo_BeginBlock2)(ReaProject* proj);
6277#endif
6278
6279#if defined(REAPERAPI_WANT_Undo_CanRedo2) || !defined(REAPERAPI_MINIMAL)
6280REAPERAPI_DEF //==============================================
6281// Undo_CanRedo2
6282// returns string of next action,if able,NULL if not
6283
6284 const char* (*Undo_CanRedo2)(ReaProject* proj);
6285#endif
6286
6287#if defined(REAPERAPI_WANT_Undo_CanUndo2) || !defined(REAPERAPI_MINIMAL)
6288REAPERAPI_DEF //==============================================
6289// Undo_CanUndo2
6290// returns string of last action,if able,NULL if not
6291
6292 const char* (*Undo_CanUndo2)(ReaProject* proj);
6293#endif
6294
6295#if defined(REAPERAPI_WANT_Undo_DoRedo2) || !defined(REAPERAPI_MINIMAL)
6296REAPERAPI_DEF //==============================================
6297// Undo_DoRedo2
6298// nonzero if success
6299
6300 int (*Undo_DoRedo2)(ReaProject* proj);
6301#endif
6302
6303#if defined(REAPERAPI_WANT_Undo_DoUndo2) || !defined(REAPERAPI_MINIMAL)
6304REAPERAPI_DEF //==============================================
6305// Undo_DoUndo2
6306// nonzero if success
6307
6308 int (*Undo_DoUndo2)(ReaProject* proj);
6309#endif
6310
6311#if defined(REAPERAPI_WANT_Undo_EndBlock) || !defined(REAPERAPI_MINIMAL)
6312REAPERAPI_DEF //==============================================
6313// Undo_EndBlock
6314// call to end the block,with extra flags if any,and a description
6315
6316 void (*Undo_EndBlock)(const char* descchange, int extraflags);
6317#endif
6318
6319#if defined(REAPERAPI_WANT_Undo_EndBlock2) || !defined(REAPERAPI_MINIMAL)
6320REAPERAPI_DEF //==============================================
6321// Undo_EndBlock2
6322// call to end the block,with extra flags if any,and a description
6323
6324 void (*Undo_EndBlock2)(ReaProject* proj, const char* descchange, int extraflags);
6325#endif
6326
6327#if defined(REAPERAPI_WANT_Undo_OnStateChange) || !defined(REAPERAPI_MINIMAL)
6328REAPERAPI_DEF //==============================================
6329// Undo_OnStateChange
6330// limited state change to items
6331
6332 void (*Undo_OnStateChange)(const char* descchange);
6333#endif
6334
6335#if defined(REAPERAPI_WANT_Undo_OnStateChange2) || !defined(REAPERAPI_MINIMAL)
6336REAPERAPI_DEF //==============================================
6337// Undo_OnStateChange2
6338// limited state change to items
6339
6340 void (*Undo_OnStateChange2)(ReaProject* proj, const char* descchange);
6341#endif
6342
6343#if defined(REAPERAPI_WANT_Undo_OnStateChange_Item) || !defined(REAPERAPI_MINIMAL)
6344REAPERAPI_DEF //==============================================
6345// Undo_OnStateChange_Item
6346
6347 void (*Undo_OnStateChange_Item)(ReaProject* proj, const char* name, MediaItem* item);
6348#endif
6349
6350#if defined(REAPERAPI_WANT_Undo_OnStateChangeEx) || !defined(REAPERAPI_MINIMAL)
6351REAPERAPI_DEF //==============================================
6352// Undo_OnStateChangeEx
6353// trackparm=-1 by default,or if updating one fx chain,you can specify track index
6354
6355 void (*Undo_OnStateChangeEx)(const char* descchange, int whichStates, int trackparm);
6356#endif
6357
6358#if defined(REAPERAPI_WANT_Undo_OnStateChangeEx2) || !defined(REAPERAPI_MINIMAL)
6359REAPERAPI_DEF //==============================================
6360// Undo_OnStateChangeEx2
6361// trackparm=-1 by default,or if updating one fx chain,you can specify track index
6362
6363 void (*Undo_OnStateChangeEx2)(ReaProject* proj, const char* descchange, int whichStates, int trackparm);
6364#endif
6365
6366#if defined(REAPERAPI_WANT_update_disk_counters) || !defined(REAPERAPI_MINIMAL)
6367REAPERAPI_DEF //==============================================
6368// update_disk_counters
6369// Updates disk I/O statistics with bytes transferred since last call.
6370
6371 void (*update_disk_counters)(int readamt, int writeamt);
6372#endif
6373
6374#if defined(REAPERAPI_WANT_UpdateArrange) || !defined(REAPERAPI_MINIMAL)
6375REAPERAPI_DEF //==============================================
6376// UpdateArrange
6377// Redraw the arrange view
6378
6379 void (*UpdateArrange)();
6380#endif
6381
6382#if defined(REAPERAPI_WANT_UpdateItemInProject) || !defined(REAPERAPI_MINIMAL)
6383REAPERAPI_DEF //==============================================
6384// UpdateItemInProject
6385
6386 void (*UpdateItemInProject)(MediaItem* item);
6387#endif
6388
6389#if defined(REAPERAPI_WANT_UpdateTimeline) || !defined(REAPERAPI_MINIMAL)
6390REAPERAPI_DEF //==============================================
6391// UpdateTimeline
6392// Redraw the arrange view and ruler
6393
6394 void (*UpdateTimeline)();
6395#endif
6396
6397#if defined(REAPERAPI_WANT_ValidatePtr) || !defined(REAPERAPI_MINIMAL)
6398REAPERAPI_DEF //==============================================
6399// ValidatePtr
6400// see ValidatePtr2
6401
6402 bool (*ValidatePtr)(void* pointer, const char* ctypename);
6403#endif
6404
6405#if defined(REAPERAPI_WANT_ValidatePtr2) || !defined(REAPERAPI_MINIMAL)
6406REAPERAPI_DEF //==============================================
6407// ValidatePtr2
6408// Return true if the pointer is a valid object of the right type in proj (proj is ignored if pointer is itself a project). Supported types are: ReaProject*, MediaTrack*, MediaItem*, MediaItem_Take*, TrackEnvelope* and PCM_source*.
6409
6410 bool (*ValidatePtr2)(ReaProject* proj, void* pointer, const char* ctypename);
6411#endif
6412
6413#if defined(REAPERAPI_WANT_ViewPrefs) || !defined(REAPERAPI_MINIMAL)
6414REAPERAPI_DEF //==============================================
6415// ViewPrefs
6416// Opens the prefs to a page, use pageByName if page is 0.
6417
6418 void (*ViewPrefs)(int page, const char* pageByName);
6419#endif
6420
6421#if defined(REAPERAPI_WANT_WDL_VirtualWnd_ScaledBlitBG) || !defined(REAPERAPI_MINIMAL)
6422REAPERAPI_DEF //==============================================
6423// WDL_VirtualWnd_ScaledBlitBG
6424
6425 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);
6426#endif
6427
6428#ifdef REAPERAPI_IMPLEMENT
6429 int REAPERAPI_LoadAPI(void *(*getAPI)(const char *))
6430 {
6431 static const struct { void **dest; const char *name; } table[]={
6432 #if defined(REAPERAPI_WANT___mergesort) || !defined(REAPERAPI_MINIMAL)
6433 {(void**)&__mergesort,"__mergesort"},
6434 #endif
6435 #if defined(REAPERAPI_WANT_AddCustomizableMenu) || !defined(REAPERAPI_MINIMAL)
6436 {(void**)&AddCustomizableMenu,"AddCustomizableMenu"},
6437 #endif
6438 #if defined(REAPERAPI_WANT_AddExtensionsMainMenu) || !defined(REAPERAPI_MINIMAL)
6439 {(void**)&AddExtensionsMainMenu,"AddExtensionsMainMenu"},
6440 #endif
6441 #if defined(REAPERAPI_WANT_AddMediaItemToTrack) || !defined(REAPERAPI_MINIMAL)
6442 {(void**)&AddMediaItemToTrack,"AddMediaItemToTrack"},
6443 #endif
6444 #if defined(REAPERAPI_WANT_AddProjectMarker) || !defined(REAPERAPI_MINIMAL)
6445 {(void**)&AddProjectMarker,"AddProjectMarker"},
6446 #endif
6447 #if defined(REAPERAPI_WANT_AddProjectMarker2) || !defined(REAPERAPI_MINIMAL)
6448 {(void**)&AddProjectMarker2,"AddProjectMarker2"},
6449 #endif
6450 #if defined(REAPERAPI_WANT_AddRemoveReaScript) || !defined(REAPERAPI_MINIMAL)
6451 {(void**)&AddRemoveReaScript,"AddRemoveReaScript"},
6452 #endif
6453 #if defined(REAPERAPI_WANT_AddTakeToMediaItem) || !defined(REAPERAPI_MINIMAL)
6454 {(void**)&AddTakeToMediaItem,"AddTakeToMediaItem"},
6455 #endif
6456 #if defined(REAPERAPI_WANT_AddTempoTimeSigMarker) || !defined(REAPERAPI_MINIMAL)
6457 {(void**)&AddTempoTimeSigMarker,"AddTempoTimeSigMarker"},
6458 #endif
6459 #if defined(REAPERAPI_WANT_adjustZoom) || !defined(REAPERAPI_MINIMAL)
6460 {(void**)&adjustZoom,"adjustZoom"},
6461 #endif
6462 #if defined(REAPERAPI_WANT_AnyTrackSolo) || !defined(REAPERAPI_MINIMAL)
6463 {(void**)&AnyTrackSolo,"AnyTrackSolo"},
6464 #endif
6465 #if defined(REAPERAPI_WANT_APIExists) || !defined(REAPERAPI_MINIMAL)
6466 {(void**)&APIExists,"APIExists"},
6467 #endif
6468 #if defined(REAPERAPI_WANT_APITest) || !defined(REAPERAPI_MINIMAL)
6469 {(void**)&APITest,"APITest"},
6470 #endif
6471 #if defined(REAPERAPI_WANT_ApplyNudge) || !defined(REAPERAPI_MINIMAL)
6472 {(void**)&ApplyNudge,"ApplyNudge"},
6473 #endif
6474 #if defined(REAPERAPI_WANT_Audio_Init) || !defined(REAPERAPI_MINIMAL)
6475 {(void**)&Audio_Init,"Audio_Init"},
6476 #endif
6477 #if defined(REAPERAPI_WANT_Audio_IsPreBuffer) || !defined(REAPERAPI_MINIMAL)
6478 {(void**)&Audio_IsPreBuffer,"Audio_IsPreBuffer"},
6479 #endif
6480 #if defined(REAPERAPI_WANT_Audio_IsRunning) || !defined(REAPERAPI_MINIMAL)
6481 {(void**)&Audio_IsRunning,"Audio_IsRunning"},
6482 #endif
6483 #if defined(REAPERAPI_WANT_Audio_Quit) || !defined(REAPERAPI_MINIMAL)
6484 {(void**)&Audio_Quit,"Audio_Quit"},
6485 #endif
6486 #if defined(REAPERAPI_WANT_Audio_RegHardwareHook) || !defined(REAPERAPI_MINIMAL)
6487 {(void**)&Audio_RegHardwareHook,"Audio_RegHardwareHook"},
6488 #endif
6489 #if defined(REAPERAPI_WANT_AudioAccessorValidateState) || !defined(REAPERAPI_MINIMAL)
6490 {(void**)&AudioAccessorValidateState,"AudioAccessorValidateState"},
6491 #endif
6492 #if defined(REAPERAPI_WANT_BypassFxAllTracks) || !defined(REAPERAPI_MINIMAL)
6493 {(void**)&BypassFxAllTracks,"BypassFxAllTracks"},
6494 #endif
6495 #if defined(REAPERAPI_WANT_CalculatePeaks) || !defined(REAPERAPI_MINIMAL)
6496 {(void**)&CalculatePeaks,"CalculatePeaks"},
6497 #endif
6498 #if defined(REAPERAPI_WANT_CalculatePeaksFloatSrcPtr) || !defined(REAPERAPI_MINIMAL)
6499 {(void**)&CalculatePeaksFloatSrcPtr,"CalculatePeaksFloatSrcPtr"},
6500 #endif
6501 #if defined(REAPERAPI_WANT_ClearAllRecArmed) || !defined(REAPERAPI_MINIMAL)
6502 {(void**)&ClearAllRecArmed,"ClearAllRecArmed"},
6503 #endif
6504 #if defined(REAPERAPI_WANT_ClearConsole) || !defined(REAPERAPI_MINIMAL)
6505 {(void**)&ClearConsole,"ClearConsole"},
6506 #endif
6507 #if defined(REAPERAPI_WANT_ClearPeakCache) || !defined(REAPERAPI_MINIMAL)
6508 {(void**)&ClearPeakCache,"ClearPeakCache"},
6509 #endif
6510 #if defined(REAPERAPI_WANT_ColorFromNative) || !defined(REAPERAPI_MINIMAL)
6511 {(void**)&ColorFromNative,"ColorFromNative"},
6512 #endif
6513 #if defined(REAPERAPI_WANT_ColorToNative) || !defined(REAPERAPI_MINIMAL)
6514 {(void**)&ColorToNative,"ColorToNative"},
6515 #endif
6516 #if defined(REAPERAPI_WANT_CountActionShortcuts) || !defined(REAPERAPI_MINIMAL)
6517 {(void**)&CountActionShortcuts,"CountActionShortcuts"},
6518 #endif
6519 #if defined(REAPERAPI_WANT_CountAutomationItems) || !defined(REAPERAPI_MINIMAL)
6520 {(void**)&CountAutomationItems,"CountAutomationItems"},
6521 #endif
6522 #if defined(REAPERAPI_WANT_CountEnvelopePoints) || !defined(REAPERAPI_MINIMAL)
6523 {(void**)&CountEnvelopePoints,"CountEnvelopePoints"},
6524 #endif
6525 #if defined(REAPERAPI_WANT_CountEnvelopePointsEx) || !defined(REAPERAPI_MINIMAL)
6526 {(void**)&CountEnvelopePointsEx,"CountEnvelopePointsEx"},
6527 #endif
6528 #if defined(REAPERAPI_WANT_CountMediaItems) || !defined(REAPERAPI_MINIMAL)
6529 {(void**)&CountMediaItems,"CountMediaItems"},
6530 #endif
6531 #if defined(REAPERAPI_WANT_CountProjectMarkers) || !defined(REAPERAPI_MINIMAL)
6532 {(void**)&CountProjectMarkers,"CountProjectMarkers"},
6533 #endif
6534 #if defined(REAPERAPI_WANT_CountSelectedMediaItems) || !defined(REAPERAPI_MINIMAL)
6535 {(void**)&CountSelectedMediaItems,"CountSelectedMediaItems"},
6536 #endif
6537 #if defined(REAPERAPI_WANT_CountSelectedTracks) || !defined(REAPERAPI_MINIMAL)
6538 {(void**)&CountSelectedTracks,"CountSelectedTracks"},
6539 #endif
6540 #if defined(REAPERAPI_WANT_CountSelectedTracks2) || !defined(REAPERAPI_MINIMAL)
6541 {(void**)&CountSelectedTracks2,"CountSelectedTracks2"},
6542 #endif
6543 #if defined(REAPERAPI_WANT_CountTakeEnvelopes) || !defined(REAPERAPI_MINIMAL)
6544 {(void**)&CountTakeEnvelopes,"CountTakeEnvelopes"},
6545 #endif
6546 #if defined(REAPERAPI_WANT_CountTakes) || !defined(REAPERAPI_MINIMAL)
6547 {(void**)&CountTakes,"CountTakes"},
6548 #endif
6549 #if defined(REAPERAPI_WANT_CountTCPFXParms) || !defined(REAPERAPI_MINIMAL)
6550 {(void**)&CountTCPFXParms,"CountTCPFXParms"},
6551 #endif
6552 #if defined(REAPERAPI_WANT_CountTempoTimeSigMarkers) || !defined(REAPERAPI_MINIMAL)
6553 {(void**)&CountTempoTimeSigMarkers,"CountTempoTimeSigMarkers"},
6554 #endif
6555 #if defined(REAPERAPI_WANT_CountTrackEnvelopes) || !defined(REAPERAPI_MINIMAL)
6556 {(void**)&CountTrackEnvelopes,"CountTrackEnvelopes"},
6557 #endif
6558 #if defined(REAPERAPI_WANT_CountTrackMediaItems) || !defined(REAPERAPI_MINIMAL)
6559 {(void**)&CountTrackMediaItems,"CountTrackMediaItems"},
6560 #endif
6561 #if defined(REAPERAPI_WANT_CountTracks) || !defined(REAPERAPI_MINIMAL)
6562 {(void**)&CountTracks,"CountTracks"},
6563 #endif
6564 #if defined(REAPERAPI_WANT_CreateLocalOscHandler) || !defined(REAPERAPI_MINIMAL)
6565 {(void**)&CreateLocalOscHandler,"CreateLocalOscHandler"},
6566 #endif
6567 #if defined(REAPERAPI_WANT_CreateMIDIInput) || !defined(REAPERAPI_MINIMAL)
6568 {(void**)&CreateMIDIInput,"CreateMIDIInput"},
6569 #endif
6570 #if defined(REAPERAPI_WANT_CreateMIDIOutput) || !defined(REAPERAPI_MINIMAL)
6571 {(void**)&CreateMIDIOutput,"CreateMIDIOutput"},
6572 #endif
6573 #if defined(REAPERAPI_WANT_CreateNewMIDIItemInProj) || !defined(REAPERAPI_MINIMAL)
6574 {(void**)&CreateNewMIDIItemInProj,"CreateNewMIDIItemInProj"},
6575 #endif
6576 #if defined(REAPERAPI_WANT_CreateTakeAudioAccessor) || !defined(REAPERAPI_MINIMAL)
6577 {(void**)&CreateTakeAudioAccessor,"CreateTakeAudioAccessor"},
6578 #endif
6579 #if defined(REAPERAPI_WANT_CreateTrackAudioAccessor) || !defined(REAPERAPI_MINIMAL)
6580 {(void**)&CreateTrackAudioAccessor,"CreateTrackAudioAccessor"},
6581 #endif
6582 #if defined(REAPERAPI_WANT_CreateTrackSend) || !defined(REAPERAPI_MINIMAL)
6583 {(void**)&CreateTrackSend,"CreateTrackSend"},
6584 #endif
6585 #if defined(REAPERAPI_WANT_CSurf_FlushUndo) || !defined(REAPERAPI_MINIMAL)
6586 {(void**)&CSurf_FlushUndo,"CSurf_FlushUndo"},
6587 #endif
6588 #if defined(REAPERAPI_WANT_CSurf_GetTouchState) || !defined(REAPERAPI_MINIMAL)
6589 {(void**)&CSurf_GetTouchState,"CSurf_GetTouchState"},
6590 #endif
6591 #if defined(REAPERAPI_WANT_CSurf_GoEnd) || !defined(REAPERAPI_MINIMAL)
6592 {(void**)&CSurf_GoEnd,"CSurf_GoEnd"},
6593 #endif
6594 #if defined(REAPERAPI_WANT_CSurf_GoStart) || !defined(REAPERAPI_MINIMAL)
6595 {(void**)&CSurf_GoStart,"CSurf_GoStart"},
6596 #endif
6597 #if defined(REAPERAPI_WANT_CSurf_NumTracks) || !defined(REAPERAPI_MINIMAL)
6598 {(void**)&CSurf_NumTracks,"CSurf_NumTracks"},
6599 #endif
6600 #if defined(REAPERAPI_WANT_CSurf_OnArrow) || !defined(REAPERAPI_MINIMAL)
6601 {(void**)&CSurf_OnArrow,"CSurf_OnArrow"},
6602 #endif
6603 #if defined(REAPERAPI_WANT_CSurf_OnFwd) || !defined(REAPERAPI_MINIMAL)
6604 {(void**)&CSurf_OnFwd,"CSurf_OnFwd"},
6605 #endif
6606 #if defined(REAPERAPI_WANT_CSurf_OnFXChange) || !defined(REAPERAPI_MINIMAL)
6607 {(void**)&CSurf_OnFXChange,"CSurf_OnFXChange"},
6608 #endif
6609 #if defined(REAPERAPI_WANT_CSurf_OnInputMonitorChange) || !defined(REAPERAPI_MINIMAL)
6610 {(void**)&CSurf_OnInputMonitorChange,"CSurf_OnInputMonitorChange"},
6611 #endif
6612 #if defined(REAPERAPI_WANT_CSurf_OnInputMonitorChangeEx) || !defined(REAPERAPI_MINIMAL)
6613 {(void**)&CSurf_OnInputMonitorChangeEx,"CSurf_OnInputMonitorChangeEx"},
6614 #endif
6615 #if defined(REAPERAPI_WANT_CSurf_OnMuteChange) || !defined(REAPERAPI_MINIMAL)
6616 {(void**)&CSurf_OnMuteChange,"CSurf_OnMuteChange"},
6617 #endif
6618 #if defined(REAPERAPI_WANT_CSurf_OnMuteChangeEx) || !defined(REAPERAPI_MINIMAL)
6619 {(void**)&CSurf_OnMuteChangeEx,"CSurf_OnMuteChangeEx"},
6620 #endif
6621 #if defined(REAPERAPI_WANT_CSurf_OnOscControlMessage) || !defined(REAPERAPI_MINIMAL)
6622 {(void**)&CSurf_OnOscControlMessage,"CSurf_OnOscControlMessage"},
6623 #endif
6624 #if defined(REAPERAPI_WANT_CSurf_OnPanChange) || !defined(REAPERAPI_MINIMAL)
6625 {(void**)&CSurf_OnPanChange,"CSurf_OnPanChange"},
6626 #endif
6627 #if defined(REAPERAPI_WANT_CSurf_OnPanChangeEx) || !defined(REAPERAPI_MINIMAL)
6628 {(void**)&CSurf_OnPanChangeEx,"CSurf_OnPanChangeEx"},
6629 #endif
6630 #if defined(REAPERAPI_WANT_CSurf_OnPause) || !defined(REAPERAPI_MINIMAL)
6631 {(void**)&CSurf_OnPause,"CSurf_OnPause"},
6632 #endif
6633 #if defined(REAPERAPI_WANT_CSurf_OnPlay) || !defined(REAPERAPI_MINIMAL)
6634 {(void**)&CSurf_OnPlay,"CSurf_OnPlay"},
6635 #endif
6636 #if defined(REAPERAPI_WANT_CSurf_OnPlayRateChange) || !defined(REAPERAPI_MINIMAL)
6637 {(void**)&CSurf_OnPlayRateChange,"CSurf_OnPlayRateChange"},
6638 #endif
6639 #if defined(REAPERAPI_WANT_CSurf_OnRecArmChange) || !defined(REAPERAPI_MINIMAL)
6640 {(void**)&CSurf_OnRecArmChange,"CSurf_OnRecArmChange"},
6641 #endif
6642 #if defined(REAPERAPI_WANT_CSurf_OnRecArmChangeEx) || !defined(REAPERAPI_MINIMAL)
6643 {(void**)&CSurf_OnRecArmChangeEx,"CSurf_OnRecArmChangeEx"},
6644 #endif
6645 #if defined(REAPERAPI_WANT_CSurf_OnRecord) || !defined(REAPERAPI_MINIMAL)
6646 {(void**)&CSurf_OnRecord,"CSurf_OnRecord"},
6647 #endif
6648 #if defined(REAPERAPI_WANT_CSurf_OnRecvPanChange) || !defined(REAPERAPI_MINIMAL)
6649 {(void**)&CSurf_OnRecvPanChange,"CSurf_OnRecvPanChange"},
6650 #endif
6651 #if defined(REAPERAPI_WANT_CSurf_OnRecvVolumeChange) || !defined(REAPERAPI_MINIMAL)
6652 {(void**)&CSurf_OnRecvVolumeChange,"CSurf_OnRecvVolumeChange"},
6653 #endif
6654 #if defined(REAPERAPI_WANT_CSurf_OnRew) || !defined(REAPERAPI_MINIMAL)
6655 {(void**)&CSurf_OnRew,"CSurf_OnRew"},
6656 #endif
6657 #if defined(REAPERAPI_WANT_CSurf_OnRewFwd) || !defined(REAPERAPI_MINIMAL)
6658 {(void**)&CSurf_OnRewFwd,"CSurf_OnRewFwd"},
6659 #endif
6660 #if defined(REAPERAPI_WANT_CSurf_OnScroll) || !defined(REAPERAPI_MINIMAL)
6661 {(void**)&CSurf_OnScroll,"CSurf_OnScroll"},
6662 #endif
6663 #if defined(REAPERAPI_WANT_CSurf_OnSelectedChange) || !defined(REAPERAPI_MINIMAL)
6664 {(void**)&CSurf_OnSelectedChange,"CSurf_OnSelectedChange"},
6665 #endif
6666 #if defined(REAPERAPI_WANT_CSurf_OnSendPanChange) || !defined(REAPERAPI_MINIMAL)
6667 {(void**)&CSurf_OnSendPanChange,"CSurf_OnSendPanChange"},
6668 #endif
6669 #if defined(REAPERAPI_WANT_CSurf_OnSendVolumeChange) || !defined(REAPERAPI_MINIMAL)
6670 {(void**)&CSurf_OnSendVolumeChange,"CSurf_OnSendVolumeChange"},
6671 #endif
6672 #if defined(REAPERAPI_WANT_CSurf_OnSoloChange) || !defined(REAPERAPI_MINIMAL)
6673 {(void**)&CSurf_OnSoloChange,"CSurf_OnSoloChange"},
6674 #endif
6675 #if defined(REAPERAPI_WANT_CSurf_OnSoloChangeEx) || !defined(REAPERAPI_MINIMAL)
6676 {(void**)&CSurf_OnSoloChangeEx,"CSurf_OnSoloChangeEx"},
6677 #endif
6678 #if defined(REAPERAPI_WANT_CSurf_OnStop) || !defined(REAPERAPI_MINIMAL)
6679 {(void**)&CSurf_OnStop,"CSurf_OnStop"},
6680 #endif
6681 #if defined(REAPERAPI_WANT_CSurf_OnTempoChange) || !defined(REAPERAPI_MINIMAL)
6682 {(void**)&CSurf_OnTempoChange,"CSurf_OnTempoChange"},
6683 #endif
6684 #if defined(REAPERAPI_WANT_CSurf_OnTrackSelection) || !defined(REAPERAPI_MINIMAL)
6685 {(void**)&CSurf_OnTrackSelection,"CSurf_OnTrackSelection"},
6686 #endif
6687 #if defined(REAPERAPI_WANT_CSurf_OnVolumeChange) || !defined(REAPERAPI_MINIMAL)
6688 {(void**)&CSurf_OnVolumeChange,"CSurf_OnVolumeChange"},
6689 #endif
6690 #if defined(REAPERAPI_WANT_CSurf_OnVolumeChangeEx) || !defined(REAPERAPI_MINIMAL)
6691 {(void**)&CSurf_OnVolumeChangeEx,"CSurf_OnVolumeChangeEx"},
6692 #endif
6693 #if defined(REAPERAPI_WANT_CSurf_OnWidthChange) || !defined(REAPERAPI_MINIMAL)
6694 {(void**)&CSurf_OnWidthChange,"CSurf_OnWidthChange"},
6695 #endif
6696 #if defined(REAPERAPI_WANT_CSurf_OnWidthChangeEx) || !defined(REAPERAPI_MINIMAL)
6697 {(void**)&CSurf_OnWidthChangeEx,"CSurf_OnWidthChangeEx"},
6698 #endif
6699 #if defined(REAPERAPI_WANT_CSurf_OnZoom) || !defined(REAPERAPI_MINIMAL)
6700 {(void**)&CSurf_OnZoom,"CSurf_OnZoom"},
6701 #endif
6702 #if defined(REAPERAPI_WANT_CSurf_ResetAllCachedVolPanStates) || !defined(REAPERAPI_MINIMAL)
6703 {(void**)&CSurf_ResetAllCachedVolPanStates,"CSurf_ResetAllCachedVolPanStates"},
6704 #endif
6705 #if defined(REAPERAPI_WANT_CSurf_ScrubAmt) || !defined(REAPERAPI_MINIMAL)
6706 {(void**)&CSurf_ScrubAmt,"CSurf_ScrubAmt"},
6707 #endif
6708 #if defined(REAPERAPI_WANT_CSurf_SetAutoMode) || !defined(REAPERAPI_MINIMAL)
6709 {(void**)&CSurf_SetAutoMode,"CSurf_SetAutoMode"},
6710 #endif
6711 #if defined(REAPERAPI_WANT_CSurf_SetPlayState) || !defined(REAPERAPI_MINIMAL)
6712 {(void**)&CSurf_SetPlayState,"CSurf_SetPlayState"},
6713 #endif
6714 #if defined(REAPERAPI_WANT_CSurf_SetRepeatState) || !defined(REAPERAPI_MINIMAL)
6715 {(void**)&CSurf_SetRepeatState,"CSurf_SetRepeatState"},
6716 #endif
6717 #if defined(REAPERAPI_WANT_CSurf_SetSurfaceMute) || !defined(REAPERAPI_MINIMAL)
6718 {(void**)&CSurf_SetSurfaceMute,"CSurf_SetSurfaceMute"},
6719 #endif
6720 #if defined(REAPERAPI_WANT_CSurf_SetSurfacePan) || !defined(REAPERAPI_MINIMAL)
6721 {(void**)&CSurf_SetSurfacePan,"CSurf_SetSurfacePan"},
6722 #endif
6723 #if defined(REAPERAPI_WANT_CSurf_SetSurfaceRecArm) || !defined(REAPERAPI_MINIMAL)
6724 {(void**)&CSurf_SetSurfaceRecArm,"CSurf_SetSurfaceRecArm"},
6725 #endif
6726 #if defined(REAPERAPI_WANT_CSurf_SetSurfaceSelected) || !defined(REAPERAPI_MINIMAL)
6727 {(void**)&CSurf_SetSurfaceSelected,"CSurf_SetSurfaceSelected"},
6728 #endif
6729 #if defined(REAPERAPI_WANT_CSurf_SetSurfaceSolo) || !defined(REAPERAPI_MINIMAL)
6730 {(void**)&CSurf_SetSurfaceSolo,"CSurf_SetSurfaceSolo"},
6731 #endif
6732 #if defined(REAPERAPI_WANT_CSurf_SetSurfaceVolume) || !defined(REAPERAPI_MINIMAL)
6733 {(void**)&CSurf_SetSurfaceVolume,"CSurf_SetSurfaceVolume"},
6734 #endif
6735 #if defined(REAPERAPI_WANT_CSurf_SetTrackListChange) || !defined(REAPERAPI_MINIMAL)
6736 {(void**)&CSurf_SetTrackListChange,"CSurf_SetTrackListChange"},
6737 #endif
6738 #if defined(REAPERAPI_WANT_CSurf_TrackFromID) || !defined(REAPERAPI_MINIMAL)
6739 {(void**)&CSurf_TrackFromID,"CSurf_TrackFromID"},
6740 #endif
6741 #if defined(REAPERAPI_WANT_CSurf_TrackToID) || !defined(REAPERAPI_MINIMAL)
6742 {(void**)&CSurf_TrackToID,"CSurf_TrackToID"},
6743 #endif
6744 #if defined(REAPERAPI_WANT_DB2SLIDER) || !defined(REAPERAPI_MINIMAL)
6745 {(void**)&DB2SLIDER,"DB2SLIDER"},
6746 #endif
6747 #if defined(REAPERAPI_WANT_DeleteActionShortcut) || !defined(REAPERAPI_MINIMAL)
6748 {(void**)&DeleteActionShortcut,"DeleteActionShortcut"},
6749 #endif
6750 #if defined(REAPERAPI_WANT_DeleteEnvelopePointRange) || !defined(REAPERAPI_MINIMAL)
6751 {(void**)&DeleteEnvelopePointRange,"DeleteEnvelopePointRange"},
6752 #endif
6753 #if defined(REAPERAPI_WANT_DeleteEnvelopePointRangeEx) || !defined(REAPERAPI_MINIMAL)
6754 {(void**)&DeleteEnvelopePointRangeEx,"DeleteEnvelopePointRangeEx"},
6755 #endif
6756 #if defined(REAPERAPI_WANT_DeleteExtState) || !defined(REAPERAPI_MINIMAL)
6757 {(void**)&DeleteExtState,"DeleteExtState"},
6758 #endif
6759 #if defined(REAPERAPI_WANT_DeleteProjectMarker) || !defined(REAPERAPI_MINIMAL)
6760 {(void**)&DeleteProjectMarker,"DeleteProjectMarker"},
6761 #endif
6762 #if defined(REAPERAPI_WANT_DeleteProjectMarkerByIndex) || !defined(REAPERAPI_MINIMAL)
6763 {(void**)&DeleteProjectMarkerByIndex,"DeleteProjectMarkerByIndex"},
6764 #endif
6765 #if defined(REAPERAPI_WANT_DeleteTakeStretchMarkers) || !defined(REAPERAPI_MINIMAL)
6766 {(void**)&DeleteTakeStretchMarkers,"DeleteTakeStretchMarkers"},
6767 #endif
6768 #if defined(REAPERAPI_WANT_DeleteTempoTimeSigMarker) || !defined(REAPERAPI_MINIMAL)
6769 {(void**)&DeleteTempoTimeSigMarker,"DeleteTempoTimeSigMarker"},
6770 #endif
6771 #if defined(REAPERAPI_WANT_DeleteTrack) || !defined(REAPERAPI_MINIMAL)
6772 {(void**)&DeleteTrack,"DeleteTrack"},
6773 #endif
6774 #if defined(REAPERAPI_WANT_DeleteTrackMediaItem) || !defined(REAPERAPI_MINIMAL)
6775 {(void**)&DeleteTrackMediaItem,"DeleteTrackMediaItem"},
6776 #endif
6777 #if defined(REAPERAPI_WANT_DestroyAudioAccessor) || !defined(REAPERAPI_MINIMAL)
6778 {(void**)&DestroyAudioAccessor,"DestroyAudioAccessor"},
6779 #endif
6780 #if defined(REAPERAPI_WANT_DestroyLocalOscHandler) || !defined(REAPERAPI_MINIMAL)
6781 {(void**)&DestroyLocalOscHandler,"DestroyLocalOscHandler"},
6782 #endif
6783 #if defined(REAPERAPI_WANT_DoActionShortcutDialog) || !defined(REAPERAPI_MINIMAL)
6784 {(void**)&DoActionShortcutDialog,"DoActionShortcutDialog"},
6785 #endif
6786 #if defined(REAPERAPI_WANT_Dock_UpdateDockID) || !defined(REAPERAPI_MINIMAL)
6787 {(void**)&Dock_UpdateDockID,"Dock_UpdateDockID"},
6788 #endif
6789 #if defined(REAPERAPI_WANT_DockIsChildOfDock) || !defined(REAPERAPI_MINIMAL)
6790 {(void**)&DockIsChildOfDock,"DockIsChildOfDock"},
6791 #endif
6792 #if defined(REAPERAPI_WANT_DockWindowActivate) || !defined(REAPERAPI_MINIMAL)
6793 {(void**)&DockWindowActivate,"DockWindowActivate"},
6794 #endif
6795 #if defined(REAPERAPI_WANT_DockWindowAdd) || !defined(REAPERAPI_MINIMAL)
6796 {(void**)&DockWindowAdd,"DockWindowAdd"},
6797 #endif
6798 #if defined(REAPERAPI_WANT_DockWindowAddEx) || !defined(REAPERAPI_MINIMAL)
6799 {(void**)&DockWindowAddEx,"DockWindowAddEx"},
6800 #endif
6801 #if defined(REAPERAPI_WANT_DockWindowRefresh) || !defined(REAPERAPI_MINIMAL)
6802 {(void**)&DockWindowRefresh,"DockWindowRefresh"},
6803 #endif
6804 #if defined(REAPERAPI_WANT_DockWindowRefreshForHWND) || !defined(REAPERAPI_MINIMAL)
6805 {(void**)&DockWindowRefreshForHWND,"DockWindowRefreshForHWND"},
6806 #endif
6807 #if defined(REAPERAPI_WANT_DockWindowRemove) || !defined(REAPERAPI_MINIMAL)
6808 {(void**)&DockWindowRemove,"DockWindowRemove"},
6809 #endif
6810 #if defined(REAPERAPI_WANT_DuplicateCustomizableMenu) || !defined(REAPERAPI_MINIMAL)
6811 {(void**)&DuplicateCustomizableMenu,"DuplicateCustomizableMenu"},
6812 #endif
6813 #if defined(REAPERAPI_WANT_EditTempoTimeSigMarker) || !defined(REAPERAPI_MINIMAL)
6814 {(void**)&EditTempoTimeSigMarker,"EditTempoTimeSigMarker"},
6815 #endif
6816 #if defined(REAPERAPI_WANT_EnsureNotCompletelyOffscreen) || !defined(REAPERAPI_MINIMAL)
6817 {(void**)&EnsureNotCompletelyOffscreen,"EnsureNotCompletelyOffscreen"},
6818 #endif
6819 #if defined(REAPERAPI_WANT_EnumerateFiles) || !defined(REAPERAPI_MINIMAL)
6820 {(void**)&EnumerateFiles,"EnumerateFiles"},
6821 #endif
6822 #if defined(REAPERAPI_WANT_EnumerateSubdirectories) || !defined(REAPERAPI_MINIMAL)
6823 {(void**)&EnumerateSubdirectories,"EnumerateSubdirectories"},
6824 #endif
6825 #if defined(REAPERAPI_WANT_EnumPitchShiftModes) || !defined(REAPERAPI_MINIMAL)
6826 {(void**)&EnumPitchShiftModes,"EnumPitchShiftModes"},
6827 #endif
6828 #if defined(REAPERAPI_WANT_EnumPitchShiftSubModes) || !defined(REAPERAPI_MINIMAL)
6829 {(void**)&EnumPitchShiftSubModes,"EnumPitchShiftSubModes"},
6830 #endif
6831 #if defined(REAPERAPI_WANT_EnumProjectMarkers) || !defined(REAPERAPI_MINIMAL)
6832 {(void**)&EnumProjectMarkers,"EnumProjectMarkers"},
6833 #endif
6834 #if defined(REAPERAPI_WANT_EnumProjectMarkers2) || !defined(REAPERAPI_MINIMAL)
6835 {(void**)&EnumProjectMarkers2,"EnumProjectMarkers2"},
6836 #endif
6837 #if defined(REAPERAPI_WANT_EnumProjectMarkers3) || !defined(REAPERAPI_MINIMAL)
6838 {(void**)&EnumProjectMarkers3,"EnumProjectMarkers3"},
6839 #endif
6840 #if defined(REAPERAPI_WANT_EnumProjects) || !defined(REAPERAPI_MINIMAL)
6841 {(void**)&EnumProjects,"EnumProjects"},
6842 #endif
6843 #if defined(REAPERAPI_WANT_EnumProjExtState) || !defined(REAPERAPI_MINIMAL)
6844 {(void**)&EnumProjExtState,"EnumProjExtState"},
6845 #endif
6846 #if defined(REAPERAPI_WANT_EnumRegionRenderMatrix) || !defined(REAPERAPI_MINIMAL)
6847 {(void**)&EnumRegionRenderMatrix,"EnumRegionRenderMatrix"},
6848 #endif
6849 #if defined(REAPERAPI_WANT_EnumTrackMIDIProgramNames) || !defined(REAPERAPI_MINIMAL)
6850 {(void**)&EnumTrackMIDIProgramNames,"EnumTrackMIDIProgramNames"},
6851 #endif
6852 #if defined(REAPERAPI_WANT_EnumTrackMIDIProgramNamesEx) || !defined(REAPERAPI_MINIMAL)
6853 {(void**)&EnumTrackMIDIProgramNamesEx,"EnumTrackMIDIProgramNamesEx"},
6854 #endif
6855 #if defined(REAPERAPI_WANT_Envelope_Evaluate) || !defined(REAPERAPI_MINIMAL)
6856 {(void**)&Envelope_Evaluate,"Envelope_Evaluate"},
6857 #endif
6858 #if defined(REAPERAPI_WANT_Envelope_FormatValue) || !defined(REAPERAPI_MINIMAL)
6859 {(void**)&Envelope_FormatValue,"Envelope_FormatValue"},
6860 #endif
6861 #if defined(REAPERAPI_WANT_Envelope_GetParentTake) || !defined(REAPERAPI_MINIMAL)
6862 {(void**)&Envelope_GetParentTake,"Envelope_GetParentTake"},
6863 #endif
6864 #if defined(REAPERAPI_WANT_Envelope_GetParentTrack) || !defined(REAPERAPI_MINIMAL)
6865 {(void**)&Envelope_GetParentTrack,"Envelope_GetParentTrack"},
6866 #endif
6867 #if defined(REAPERAPI_WANT_Envelope_SortPoints) || !defined(REAPERAPI_MINIMAL)
6868 {(void**)&Envelope_SortPoints,"Envelope_SortPoints"},
6869 #endif
6870 #if defined(REAPERAPI_WANT_Envelope_SortPointsEx) || !defined(REAPERAPI_MINIMAL)
6871 {(void**)&Envelope_SortPointsEx,"Envelope_SortPointsEx"},
6872 #endif
6873 #if defined(REAPERAPI_WANT_ExecProcess) || !defined(REAPERAPI_MINIMAL)
6874 {(void**)&ExecProcess,"ExecProcess"},
6875 #endif
6876 #if defined(REAPERAPI_WANT_file_exists) || !defined(REAPERAPI_MINIMAL)
6877 {(void**)&file_exists,"file_exists"},
6878 #endif
6879 #if defined(REAPERAPI_WANT_FindTempoTimeSigMarker) || !defined(REAPERAPI_MINIMAL)
6880 {(void**)&FindTempoTimeSigMarker,"FindTempoTimeSigMarker"},
6881 #endif
6882 #if defined(REAPERAPI_WANT_format_timestr) || !defined(REAPERAPI_MINIMAL)
6883 {(void**)&format_timestr,"format_timestr"},
6884 #endif
6885 #if defined(REAPERAPI_WANT_format_timestr_len) || !defined(REAPERAPI_MINIMAL)
6886 {(void**)&format_timestr_len,"format_timestr_len"},
6887 #endif
6888 #if defined(REAPERAPI_WANT_format_timestr_pos) || !defined(REAPERAPI_MINIMAL)
6889 {(void**)&format_timestr_pos,"format_timestr_pos"},
6890 #endif
6891 #if defined(REAPERAPI_WANT_FreeHeapPtr) || !defined(REAPERAPI_MINIMAL)
6892 {(void**)&FreeHeapPtr,"FreeHeapPtr"},
6893 #endif
6894 #if defined(REAPERAPI_WANT_genGuid) || !defined(REAPERAPI_MINIMAL)
6895 {(void**)&genGuid,"genGuid"},
6896 #endif
6897 #if defined(REAPERAPI_WANT_get_config_var) || !defined(REAPERAPI_MINIMAL)
6898 {(void**)&get_config_var,"get_config_var"},
6899 #endif
6900 #if defined(REAPERAPI_WANT_get_ini_file) || !defined(REAPERAPI_MINIMAL)
6901 {(void**)&get_ini_file,"get_ini_file"},
6902 #endif
6903 #if defined(REAPERAPI_WANT_get_midi_config_var) || !defined(REAPERAPI_MINIMAL)
6904 {(void**)&get_midi_config_var,"get_midi_config_var"},
6905 #endif
6906 #if defined(REAPERAPI_WANT_GetActionShortcutDesc) || !defined(REAPERAPI_MINIMAL)
6907 {(void**)&GetActionShortcutDesc,"GetActionShortcutDesc"},
6908 #endif
6909 #if defined(REAPERAPI_WANT_GetActiveTake) || !defined(REAPERAPI_MINIMAL)
6910 {(void**)&GetActiveTake,"GetActiveTake"},
6911 #endif
6912 #if defined(REAPERAPI_WANT_GetAllProjectPlayStates) || !defined(REAPERAPI_MINIMAL)
6913 {(void**)&GetAllProjectPlayStates,"GetAllProjectPlayStates"},
6914 #endif
6915 #if defined(REAPERAPI_WANT_GetAppVersion) || !defined(REAPERAPI_MINIMAL)
6916 {(void**)&GetAppVersion,"GetAppVersion"},
6917 #endif
6918 #if defined(REAPERAPI_WANT_GetAudioAccessorEndTime) || !defined(REAPERAPI_MINIMAL)
6919 {(void**)&GetAudioAccessorEndTime,"GetAudioAccessorEndTime"},
6920 #endif
6921 #if defined(REAPERAPI_WANT_GetAudioAccessorHash) || !defined(REAPERAPI_MINIMAL)
6922 {(void**)&GetAudioAccessorHash,"GetAudioAccessorHash"},
6923 #endif
6924 #if defined(REAPERAPI_WANT_GetAudioAccessorSamples) || !defined(REAPERAPI_MINIMAL)
6925 {(void**)&GetAudioAccessorSamples,"GetAudioAccessorSamples"},
6926 #endif
6927 #if defined(REAPERAPI_WANT_GetAudioAccessorStartTime) || !defined(REAPERAPI_MINIMAL)
6928 {(void**)&GetAudioAccessorStartTime,"GetAudioAccessorStartTime"},
6929 #endif
6930 #if defined(REAPERAPI_WANT_GetColorTheme) || !defined(REAPERAPI_MINIMAL)
6931 {(void**)&GetColorTheme,"GetColorTheme"},
6932 #endif
6933 #if defined(REAPERAPI_WANT_GetColorThemeStruct) || !defined(REAPERAPI_MINIMAL)
6934 {(void**)&GetColorThemeStruct,"GetColorThemeStruct"},
6935 #endif
6936 #if defined(REAPERAPI_WANT_GetConfigWantsDock) || !defined(REAPERAPI_MINIMAL)
6937 {(void**)&GetConfigWantsDock,"GetConfigWantsDock"},
6938 #endif
6939 #if defined(REAPERAPI_WANT_GetContextMenu) || !defined(REAPERAPI_MINIMAL)
6940 {(void**)&GetContextMenu,"GetContextMenu"},
6941 #endif
6942 #if defined(REAPERAPI_WANT_GetCurrentProjectInLoadSave) || !defined(REAPERAPI_MINIMAL)
6943 {(void**)&GetCurrentProjectInLoadSave,"GetCurrentProjectInLoadSave"},
6944 #endif
6945 #if defined(REAPERAPI_WANT_GetCursorContext) || !defined(REAPERAPI_MINIMAL)
6946 {(void**)&GetCursorContext,"GetCursorContext"},
6947 #endif
6948 #if defined(REAPERAPI_WANT_GetCursorContext2) || !defined(REAPERAPI_MINIMAL)
6949 {(void**)&GetCursorContext2,"GetCursorContext2"},
6950 #endif
6951 #if defined(REAPERAPI_WANT_GetCursorPosition) || !defined(REAPERAPI_MINIMAL)
6952 {(void**)&GetCursorPosition,"GetCursorPosition"},
6953 #endif
6954 #if defined(REAPERAPI_WANT_GetCursorPositionEx) || !defined(REAPERAPI_MINIMAL)
6955 {(void**)&GetCursorPositionEx,"GetCursorPositionEx"},
6956 #endif
6957 #if defined(REAPERAPI_WANT_GetDisplayedMediaItemColor) || !defined(REAPERAPI_MINIMAL)
6958 {(void**)&GetDisplayedMediaItemColor,"GetDisplayedMediaItemColor"},
6959 #endif
6960 #if defined(REAPERAPI_WANT_GetDisplayedMediaItemColor2) || !defined(REAPERAPI_MINIMAL)
6961 {(void**)&GetDisplayedMediaItemColor2,"GetDisplayedMediaItemColor2"},
6962 #endif
6963 #if defined(REAPERAPI_WANT_GetEnvelopeName) || !defined(REAPERAPI_MINIMAL)
6964 {(void**)&GetEnvelopeName,"GetEnvelopeName"},
6965 #endif
6966 #if defined(REAPERAPI_WANT_GetEnvelopePoint) || !defined(REAPERAPI_MINIMAL)
6967 {(void**)&GetEnvelopePoint,"GetEnvelopePoint"},
6968 #endif
6969 #if defined(REAPERAPI_WANT_GetEnvelopePointByTime) || !defined(REAPERAPI_MINIMAL)
6970 {(void**)&GetEnvelopePointByTime,"GetEnvelopePointByTime"},
6971 #endif
6972 #if defined(REAPERAPI_WANT_GetEnvelopePointByTimeEx) || !defined(REAPERAPI_MINIMAL)
6973 {(void**)&GetEnvelopePointByTimeEx,"GetEnvelopePointByTimeEx"},
6974 #endif
6975 #if defined(REAPERAPI_WANT_GetEnvelopePointEx) || !defined(REAPERAPI_MINIMAL)
6976 {(void**)&GetEnvelopePointEx,"GetEnvelopePointEx"},
6977 #endif
6978 #if defined(REAPERAPI_WANT_GetEnvelopeScalingMode) || !defined(REAPERAPI_MINIMAL)
6979 {(void**)&GetEnvelopeScalingMode,"GetEnvelopeScalingMode"},
6980 #endif
6981 #if defined(REAPERAPI_WANT_GetEnvelopeStateChunk) || !defined(REAPERAPI_MINIMAL)
6982 {(void**)&GetEnvelopeStateChunk,"GetEnvelopeStateChunk"},
6983 #endif
6984 #if defined(REAPERAPI_WANT_GetExePath) || !defined(REAPERAPI_MINIMAL)
6985 {(void**)&GetExePath,"GetExePath"},
6986 #endif
6987 #if defined(REAPERAPI_WANT_GetExtState) || !defined(REAPERAPI_MINIMAL)
6988 {(void**)&GetExtState,"GetExtState"},
6989 #endif
6990 #if defined(REAPERAPI_WANT_GetFocusedFX) || !defined(REAPERAPI_MINIMAL)
6991 {(void**)&GetFocusedFX,"GetFocusedFX"},
6992 #endif
6993 #if defined(REAPERAPI_WANT_GetFreeDiskSpaceForRecordPath) || !defined(REAPERAPI_MINIMAL)
6994 {(void**)&GetFreeDiskSpaceForRecordPath,"GetFreeDiskSpaceForRecordPath"},
6995 #endif
6996 #if defined(REAPERAPI_WANT_GetFXEnvelope) || !defined(REAPERAPI_MINIMAL)
6997 {(void**)&GetFXEnvelope,"GetFXEnvelope"},
6998 #endif
6999 #if defined(REAPERAPI_WANT_GetGlobalAutomationOverride) || !defined(REAPERAPI_MINIMAL)
7000 {(void**)&GetGlobalAutomationOverride,"GetGlobalAutomationOverride"},
7001 #endif
7002 #if defined(REAPERAPI_WANT_GetHZoomLevel) || !defined(REAPERAPI_MINIMAL)
7003 {(void**)&GetHZoomLevel,"GetHZoomLevel"},
7004 #endif
7005 #if defined(REAPERAPI_WANT_GetIconThemePointer) || !defined(REAPERAPI_MINIMAL)
7006 {(void**)&GetIconThemePointer,"GetIconThemePointer"},
7007 #endif
7008 #if defined(REAPERAPI_WANT_GetIconThemeStruct) || !defined(REAPERAPI_MINIMAL)
7009 {(void**)&GetIconThemeStruct,"GetIconThemeStruct"},
7010 #endif
7011 #if defined(REAPERAPI_WANT_GetInputChannelName) || !defined(REAPERAPI_MINIMAL)
7012 {(void**)&GetInputChannelName,"GetInputChannelName"},
7013 #endif
7014 #if defined(REAPERAPI_WANT_GetInputOutputLatency) || !defined(REAPERAPI_MINIMAL)
7015 {(void**)&GetInputOutputLatency,"GetInputOutputLatency"},
7016 #endif
7017 #if defined(REAPERAPI_WANT_GetItemEditingTime2) || !defined(REAPERAPI_MINIMAL)
7018 {(void**)&GetItemEditingTime2,"GetItemEditingTime2"},
7019 #endif
7020 #if defined(REAPERAPI_WANT_GetItemProjectContext) || !defined(REAPERAPI_MINIMAL)
7021 {(void**)&GetItemProjectContext,"GetItemProjectContext"},
7022 #endif
7023 #if defined(REAPERAPI_WANT_GetItemStateChunk) || !defined(REAPERAPI_MINIMAL)
7024 {(void**)&GetItemStateChunk,"GetItemStateChunk"},
7025 #endif
7026 #if defined(REAPERAPI_WANT_GetLastColorThemeFile) || !defined(REAPERAPI_MINIMAL)
7027 {(void**)&GetLastColorThemeFile,"GetLastColorThemeFile"},
7028 #endif
7029 #if defined(REAPERAPI_WANT_GetLastMarkerAndCurRegion) || !defined(REAPERAPI_MINIMAL)
7030 {(void**)&GetLastMarkerAndCurRegion,"GetLastMarkerAndCurRegion"},
7031 #endif
7032 #if defined(REAPERAPI_WANT_GetLastTouchedFX) || !defined(REAPERAPI_MINIMAL)
7033 {(void**)&GetLastTouchedFX,"GetLastTouchedFX"},
7034 #endif
7035 #if defined(REAPERAPI_WANT_GetLastTouchedTrack) || !defined(REAPERAPI_MINIMAL)
7036 {(void**)&GetLastTouchedTrack,"GetLastTouchedTrack"},
7037 #endif
7038 #if defined(REAPERAPI_WANT_GetMainHwnd) || !defined(REAPERAPI_MINIMAL)
7039 {(void**)&GetMainHwnd,"GetMainHwnd"},
7040 #endif
7041 #if defined(REAPERAPI_WANT_GetMasterMuteSoloFlags) || !defined(REAPERAPI_MINIMAL)
7042 {(void**)&GetMasterMuteSoloFlags,"GetMasterMuteSoloFlags"},
7043 #endif
7044 #if defined(REAPERAPI_WANT_GetMasterTrack) || !defined(REAPERAPI_MINIMAL)
7045 {(void**)&GetMasterTrack,"GetMasterTrack"},
7046 #endif
7047 #if defined(REAPERAPI_WANT_GetMasterTrackVisibility) || !defined(REAPERAPI_MINIMAL)
7048 {(void**)&GetMasterTrackVisibility,"GetMasterTrackVisibility"},
7049 #endif
7050 #if defined(REAPERAPI_WANT_GetMaxMidiInputs) || !defined(REAPERAPI_MINIMAL)
7051 {(void**)&GetMaxMidiInputs,"GetMaxMidiInputs"},
7052 #endif
7053 #if defined(REAPERAPI_WANT_GetMaxMidiOutputs) || !defined(REAPERAPI_MINIMAL)
7054 {(void**)&GetMaxMidiOutputs,"GetMaxMidiOutputs"},
7055 #endif
7056 #if defined(REAPERAPI_WANT_GetMediaItem) || !defined(REAPERAPI_MINIMAL)
7057 {(void**)&GetMediaItem,"GetMediaItem"},
7058 #endif
7059 #if defined(REAPERAPI_WANT_GetMediaItem_Track) || !defined(REAPERAPI_MINIMAL)
7060 {(void**)&GetMediaItem_Track,"GetMediaItem_Track"},
7061 #endif
7062 #if defined(REAPERAPI_WANT_GetMediaItemInfo_Value) || !defined(REAPERAPI_MINIMAL)
7063 {(void**)&GetMediaItemInfo_Value,"GetMediaItemInfo_Value"},
7064 #endif
7065 #if defined(REAPERAPI_WANT_GetMediaItemNumTakes) || !defined(REAPERAPI_MINIMAL)
7066 {(void**)&GetMediaItemNumTakes,"GetMediaItemNumTakes"},
7067 #endif
7068 #if defined(REAPERAPI_WANT_GetMediaItemTake) || !defined(REAPERAPI_MINIMAL)
7069 {(void**)&GetMediaItemTake,"GetMediaItemTake"},
7070 #endif
7071 #if defined(REAPERAPI_WANT_GetMediaItemTake_Item) || !defined(REAPERAPI_MINIMAL)
7072 {(void**)&GetMediaItemTake_Item,"GetMediaItemTake_Item"},
7073 #endif
7074 #if defined(REAPERAPI_WANT_GetMediaItemTake_Peaks) || !defined(REAPERAPI_MINIMAL)
7075 {(void**)&GetMediaItemTake_Peaks,"GetMediaItemTake_Peaks"},
7076 #endif
7077 #if defined(REAPERAPI_WANT_GetMediaItemTake_Source) || !defined(REAPERAPI_MINIMAL)
7078 {(void**)&GetMediaItemTake_Source,"GetMediaItemTake_Source"},
7079 #endif
7080 #if defined(REAPERAPI_WANT_GetMediaItemTake_Track) || !defined(REAPERAPI_MINIMAL)
7081 {(void**)&GetMediaItemTake_Track,"GetMediaItemTake_Track"},
7082 #endif
7083 #if defined(REAPERAPI_WANT_GetMediaItemTakeByGUID) || !defined(REAPERAPI_MINIMAL)
7084 {(void**)&GetMediaItemTakeByGUID,"GetMediaItemTakeByGUID"},
7085 #endif
7086 #if defined(REAPERAPI_WANT_GetMediaItemTakeInfo_Value) || !defined(REAPERAPI_MINIMAL)
7087 {(void**)&GetMediaItemTakeInfo_Value,"GetMediaItemTakeInfo_Value"},
7088 #endif
7089 #if defined(REAPERAPI_WANT_GetMediaItemTrack) || !defined(REAPERAPI_MINIMAL)
7090 {(void**)&GetMediaItemTrack,"GetMediaItemTrack"},
7091 #endif
7092 #if defined(REAPERAPI_WANT_GetMediaSourceFileName) || !defined(REAPERAPI_MINIMAL)
7093 {(void**)&GetMediaSourceFileName,"GetMediaSourceFileName"},
7094 #endif
7095 #if defined(REAPERAPI_WANT_GetMediaSourceLength) || !defined(REAPERAPI_MINIMAL)
7096 {(void**)&GetMediaSourceLength,"GetMediaSourceLength"},
7097 #endif
7098 #if defined(REAPERAPI_WANT_GetMediaSourceNumChannels) || !defined(REAPERAPI_MINIMAL)
7099 {(void**)&GetMediaSourceNumChannels,"GetMediaSourceNumChannels"},
7100 #endif
7101 #if defined(REAPERAPI_WANT_GetMediaSourceParent) || !defined(REAPERAPI_MINIMAL)
7102 {(void**)&GetMediaSourceParent,"GetMediaSourceParent"},
7103 #endif
7104 #if defined(REAPERAPI_WANT_GetMediaSourceSampleRate) || !defined(REAPERAPI_MINIMAL)
7105 {(void**)&GetMediaSourceSampleRate,"GetMediaSourceSampleRate"},
7106 #endif
7107 #if defined(REAPERAPI_WANT_GetMediaSourceType) || !defined(REAPERAPI_MINIMAL)
7108 {(void**)&GetMediaSourceType,"GetMediaSourceType"},
7109 #endif
7110 #if defined(REAPERAPI_WANT_GetMediaTrackInfo_Value) || !defined(REAPERAPI_MINIMAL)
7111 {(void**)&GetMediaTrackInfo_Value,"GetMediaTrackInfo_Value"},
7112 #endif
7113 #if defined(REAPERAPI_WANT_GetMIDIInputName) || !defined(REAPERAPI_MINIMAL)
7114 {(void**)&GetMIDIInputName,"GetMIDIInputName"},
7115 #endif
7116 #if defined(REAPERAPI_WANT_GetMIDIOutputName) || !defined(REAPERAPI_MINIMAL)
7117 {(void**)&GetMIDIOutputName,"GetMIDIOutputName"},
7118 #endif
7119 #if defined(REAPERAPI_WANT_GetMixerScroll) || !defined(REAPERAPI_MINIMAL)
7120 {(void**)&GetMixerScroll,"GetMixerScroll"},
7121 #endif
7122 #if defined(REAPERAPI_WANT_GetMouseModifier) || !defined(REAPERAPI_MINIMAL)
7123 {(void**)&GetMouseModifier,"GetMouseModifier"},
7124 #endif
7125 #if defined(REAPERAPI_WANT_GetMousePosition) || !defined(REAPERAPI_MINIMAL)
7126 {(void**)&GetMousePosition,"GetMousePosition"},
7127 #endif
7128 #if defined(REAPERAPI_WANT_GetNumAudioInputs) || !defined(REAPERAPI_MINIMAL)
7129 {(void**)&GetNumAudioInputs,"GetNumAudioInputs"},
7130 #endif
7131 #if defined(REAPERAPI_WANT_GetNumAudioOutputs) || !defined(REAPERAPI_MINIMAL)
7132 {(void**)&GetNumAudioOutputs,"GetNumAudioOutputs"},
7133 #endif
7134 #if defined(REAPERAPI_WANT_GetNumMIDIInputs) || !defined(REAPERAPI_MINIMAL)
7135 {(void**)&GetNumMIDIInputs,"GetNumMIDIInputs"},
7136 #endif
7137 #if defined(REAPERAPI_WANT_GetNumMIDIOutputs) || !defined(REAPERAPI_MINIMAL)
7138 {(void**)&GetNumMIDIOutputs,"GetNumMIDIOutputs"},
7139 #endif
7140 #if defined(REAPERAPI_WANT_GetNumTracks) || !defined(REAPERAPI_MINIMAL)
7141 {(void**)&GetNumTracks,"GetNumTracks"},
7142 #endif
7143 #if defined(REAPERAPI_WANT_GetOS) || !defined(REAPERAPI_MINIMAL)
7144 {(void**)&GetOS,"GetOS"},
7145 #endif
7146 #if defined(REAPERAPI_WANT_GetOutputChannelName) || !defined(REAPERAPI_MINIMAL)
7147 {(void**)&GetOutputChannelName,"GetOutputChannelName"},
7148 #endif
7149 #if defined(REAPERAPI_WANT_GetOutputLatency) || !defined(REAPERAPI_MINIMAL)
7150 {(void**)&GetOutputLatency,"GetOutputLatency"},
7151 #endif
7152 #if defined(REAPERAPI_WANT_GetParentTrack) || !defined(REAPERAPI_MINIMAL)
7153 {(void**)&GetParentTrack,"GetParentTrack"},
7154 #endif
7155 #if defined(REAPERAPI_WANT_GetPeakFileName) || !defined(REAPERAPI_MINIMAL)
7156 {(void**)&GetPeakFileName,"GetPeakFileName"},
7157 #endif
7158 #if defined(REAPERAPI_WANT_GetPeakFileNameEx) || !defined(REAPERAPI_MINIMAL)
7159 {(void**)&GetPeakFileNameEx,"GetPeakFileNameEx"},
7160 #endif
7161 #if defined(REAPERAPI_WANT_GetPeakFileNameEx2) || !defined(REAPERAPI_MINIMAL)
7162 {(void**)&GetPeakFileNameEx2,"GetPeakFileNameEx2"},
7163 #endif
7164 #if defined(REAPERAPI_WANT_GetPeaksBitmap) || !defined(REAPERAPI_MINIMAL)
7165 {(void**)&GetPeaksBitmap,"GetPeaksBitmap"},
7166 #endif
7167 #if defined(REAPERAPI_WANT_GetPlayPosition) || !defined(REAPERAPI_MINIMAL)
7168 {(void**)&GetPlayPosition,"GetPlayPosition"},
7169 #endif
7170 #if defined(REAPERAPI_WANT_GetPlayPosition2) || !defined(REAPERAPI_MINIMAL)
7171 {(void**)&GetPlayPosition2,"GetPlayPosition2"},
7172 #endif
7173 #if defined(REAPERAPI_WANT_GetPlayPosition2Ex) || !defined(REAPERAPI_MINIMAL)
7174 {(void**)&GetPlayPosition2Ex,"GetPlayPosition2Ex"},
7175 #endif
7176 #if defined(REAPERAPI_WANT_GetPlayPositionEx) || !defined(REAPERAPI_MINIMAL)
7177 {(void**)&GetPlayPositionEx,"GetPlayPositionEx"},
7178 #endif
7179 #if defined(REAPERAPI_WANT_GetPlayState) || !defined(REAPERAPI_MINIMAL)
7180 {(void**)&GetPlayState,"GetPlayState"},
7181 #endif
7182 #if defined(REAPERAPI_WANT_GetPlayStateEx) || !defined(REAPERAPI_MINIMAL)
7183 {(void**)&GetPlayStateEx,"GetPlayStateEx"},
7184 #endif
7185 #if defined(REAPERAPI_WANT_GetPreferredDiskReadMode) || !defined(REAPERAPI_MINIMAL)
7186 {(void**)&GetPreferredDiskReadMode,"GetPreferredDiskReadMode"},
7187 #endif
7188 #if defined(REAPERAPI_WANT_GetPreferredDiskReadModePeak) || !defined(REAPERAPI_MINIMAL)
7189 {(void**)&GetPreferredDiskReadModePeak,"GetPreferredDiskReadModePeak"},
7190 #endif
7191 #if defined(REAPERAPI_WANT_GetPreferredDiskWriteMode) || !defined(REAPERAPI_MINIMAL)
7192 {(void**)&GetPreferredDiskWriteMode,"GetPreferredDiskWriteMode"},
7193 #endif
7194 #if defined(REAPERAPI_WANT_GetProjectLength) || !defined(REAPERAPI_MINIMAL)
7195 {(void**)&GetProjectLength,"GetProjectLength"},
7196 #endif
7197 #if defined(REAPERAPI_WANT_GetProjectName) || !defined(REAPERAPI_MINIMAL)
7198 {(void**)&GetProjectName,"GetProjectName"},
7199 #endif
7200 #if defined(REAPERAPI_WANT_GetProjectPath) || !defined(REAPERAPI_MINIMAL)
7201 {(void**)&GetProjectPath,"GetProjectPath"},
7202 #endif
7203 #if defined(REAPERAPI_WANT_GetProjectPathEx) || !defined(REAPERAPI_MINIMAL)
7204 {(void**)&GetProjectPathEx,"GetProjectPathEx"},
7205 #endif
7206 #if defined(REAPERAPI_WANT_GetProjectStateChangeCount) || !defined(REAPERAPI_MINIMAL)
7207 {(void**)&GetProjectStateChangeCount,"GetProjectStateChangeCount"},
7208 #endif
7209 #if defined(REAPERAPI_WANT_GetProjectTimeOffset) || !defined(REAPERAPI_MINIMAL)
7210 {(void**)&GetProjectTimeOffset,"GetProjectTimeOffset"},
7211 #endif
7212 #if defined(REAPERAPI_WANT_GetProjectTimeSignature) || !defined(REAPERAPI_MINIMAL)
7213 {(void**)&GetProjectTimeSignature,"GetProjectTimeSignature"},
7214 #endif
7215 #if defined(REAPERAPI_WANT_GetProjectTimeSignature2) || !defined(REAPERAPI_MINIMAL)
7216 {(void**)&GetProjectTimeSignature2,"GetProjectTimeSignature2"},
7217 #endif
7218 #if defined(REAPERAPI_WANT_GetProjExtState) || !defined(REAPERAPI_MINIMAL)
7219 {(void**)&GetProjExtState,"GetProjExtState"},
7220 #endif
7221 #if defined(REAPERAPI_WANT_GetResourcePath) || !defined(REAPERAPI_MINIMAL)
7222 {(void**)&GetResourcePath,"GetResourcePath"},
7223 #endif
7224 #if defined(REAPERAPI_WANT_GetSelectedEnvelope) || !defined(REAPERAPI_MINIMAL)
7225 {(void**)&GetSelectedEnvelope,"GetSelectedEnvelope"},
7226 #endif
7227 #if defined(REAPERAPI_WANT_GetSelectedMediaItem) || !defined(REAPERAPI_MINIMAL)
7228 {(void**)&GetSelectedMediaItem,"GetSelectedMediaItem"},
7229 #endif
7230 #if defined(REAPERAPI_WANT_GetSelectedTrack) || !defined(REAPERAPI_MINIMAL)
7231 {(void**)&GetSelectedTrack,"GetSelectedTrack"},
7232 #endif
7233 #if defined(REAPERAPI_WANT_GetSelectedTrack2) || !defined(REAPERAPI_MINIMAL)
7234 {(void**)&GetSelectedTrack2,"GetSelectedTrack2"},
7235 #endif
7236 #if defined(REAPERAPI_WANT_GetSelectedTrackEnvelope) || !defined(REAPERAPI_MINIMAL)
7237 {(void**)&GetSelectedTrackEnvelope,"GetSelectedTrackEnvelope"},
7238 #endif
7239 #if defined(REAPERAPI_WANT_GetSet_ArrangeView2) || !defined(REAPERAPI_MINIMAL)
7240 {(void**)&GetSet_ArrangeView2,"GetSet_ArrangeView2"},
7241 #endif
7242 #if defined(REAPERAPI_WANT_GetSet_LoopTimeRange) || !defined(REAPERAPI_MINIMAL)
7243 {(void**)&GetSet_LoopTimeRange,"GetSet_LoopTimeRange"},
7244 #endif
7245 #if defined(REAPERAPI_WANT_GetSet_LoopTimeRange2) || !defined(REAPERAPI_MINIMAL)
7246 {(void**)&GetSet_LoopTimeRange2,"GetSet_LoopTimeRange2"},
7247 #endif
7248 #if defined(REAPERAPI_WANT_GetSetAutomationItemInfo) || !defined(REAPERAPI_MINIMAL)
7249 {(void**)&GetSetAutomationItemInfo,"GetSetAutomationItemInfo"},
7250 #endif
7251 #if defined(REAPERAPI_WANT_GetSetEnvelopeState) || !defined(REAPERAPI_MINIMAL)
7252 {(void**)&GetSetEnvelopeState,"GetSetEnvelopeState"},
7253 #endif
7254 #if defined(REAPERAPI_WANT_GetSetEnvelopeState2) || !defined(REAPERAPI_MINIMAL)
7255 {(void**)&GetSetEnvelopeState2,"GetSetEnvelopeState2"},
7256 #endif
7257 #if defined(REAPERAPI_WANT_GetSetItemState) || !defined(REAPERAPI_MINIMAL)
7258 {(void**)&GetSetItemState,"GetSetItemState"},
7259 #endif
7260 #if defined(REAPERAPI_WANT_GetSetItemState2) || !defined(REAPERAPI_MINIMAL)
7261 {(void**)&GetSetItemState2,"GetSetItemState2"},
7262 #endif
7263 #if defined(REAPERAPI_WANT_GetSetMediaItemInfo) || !defined(REAPERAPI_MINIMAL)
7264 {(void**)&GetSetMediaItemInfo,"GetSetMediaItemInfo"},
7265 #endif
7266 #if defined(REAPERAPI_WANT_GetSetMediaItemTakeInfo) || !defined(REAPERAPI_MINIMAL)
7267 {(void**)&GetSetMediaItemTakeInfo,"GetSetMediaItemTakeInfo"},
7268 #endif
7269 #if defined(REAPERAPI_WANT_GetSetMediaItemTakeInfo_String) || !defined(REAPERAPI_MINIMAL)
7270 {(void**)&GetSetMediaItemTakeInfo_String,"GetSetMediaItemTakeInfo_String"},
7271 #endif
7272 #if defined(REAPERAPI_WANT_GetSetMediaTrackInfo) || !defined(REAPERAPI_MINIMAL)
7273 {(void**)&GetSetMediaTrackInfo,"GetSetMediaTrackInfo"},
7274 #endif
7275 #if defined(REAPERAPI_WANT_GetSetMediaTrackInfo_String) || !defined(REAPERAPI_MINIMAL)
7276 {(void**)&GetSetMediaTrackInfo_String,"GetSetMediaTrackInfo_String"},
7277 #endif
7278 #if defined(REAPERAPI_WANT_GetSetObjectState) || !defined(REAPERAPI_MINIMAL)
7279 {(void**)&GetSetObjectState,"GetSetObjectState"},
7280 #endif
7281 #if defined(REAPERAPI_WANT_GetSetObjectState2) || !defined(REAPERAPI_MINIMAL)
7282 {(void**)&GetSetObjectState2,"GetSetObjectState2"},
7283 #endif
7284 #if defined(REAPERAPI_WANT_GetSetProjectAuthor) || !defined(REAPERAPI_MINIMAL)
7285 {(void**)&GetSetProjectAuthor,"GetSetProjectAuthor"},
7286 #endif
7287 #if defined(REAPERAPI_WANT_GetSetProjectGrid) || !defined(REAPERAPI_MINIMAL)
7288 {(void**)&GetSetProjectGrid,"GetSetProjectGrid"},
7289 #endif
7290 #if defined(REAPERAPI_WANT_GetSetProjectNotes) || !defined(REAPERAPI_MINIMAL)
7291 {(void**)&GetSetProjectNotes,"GetSetProjectNotes"},
7292 #endif
7293 #if defined(REAPERAPI_WANT_GetSetRepeat) || !defined(REAPERAPI_MINIMAL)
7294 {(void**)&GetSetRepeat,"GetSetRepeat"},
7295 #endif
7296 #if defined(REAPERAPI_WANT_GetSetRepeatEx) || !defined(REAPERAPI_MINIMAL)
7297 {(void**)&GetSetRepeatEx,"GetSetRepeatEx"},
7298 #endif
7299 #if defined(REAPERAPI_WANT_GetSetTrackGroupMembership) || !defined(REAPERAPI_MINIMAL)
7300 {(void**)&GetSetTrackGroupMembership,"GetSetTrackGroupMembership"},
7301 #endif
7302 #if defined(REAPERAPI_WANT_GetSetTrackGroupMembershipHigh) || !defined(REAPERAPI_MINIMAL)
7303 {(void**)&GetSetTrackGroupMembershipHigh,"GetSetTrackGroupMembershipHigh"},
7304 #endif
7305 #if defined(REAPERAPI_WANT_GetSetTrackMIDISupportFile) || !defined(REAPERAPI_MINIMAL)
7306 {(void**)&GetSetTrackMIDISupportFile,"GetSetTrackMIDISupportFile"},
7307 #endif
7308 #if defined(REAPERAPI_WANT_GetSetTrackSendInfo) || !defined(REAPERAPI_MINIMAL)
7309 {(void**)&GetSetTrackSendInfo,"GetSetTrackSendInfo"},
7310 #endif
7311 #if defined(REAPERAPI_WANT_GetSetTrackState) || !defined(REAPERAPI_MINIMAL)
7312 {(void**)&GetSetTrackState,"GetSetTrackState"},
7313 #endif
7314 #if defined(REAPERAPI_WANT_GetSetTrackState2) || !defined(REAPERAPI_MINIMAL)
7315 {(void**)&GetSetTrackState2,"GetSetTrackState2"},
7316 #endif
7317 #if defined(REAPERAPI_WANT_GetSubProjectFromSource) || !defined(REAPERAPI_MINIMAL)
7318 {(void**)&GetSubProjectFromSource,"GetSubProjectFromSource"},
7319 #endif
7320 #if defined(REAPERAPI_WANT_GetTake) || !defined(REAPERAPI_MINIMAL)
7321 {(void**)&GetTake,"GetTake"},
7322 #endif
7323 #if defined(REAPERAPI_WANT_GetTakeEnvelope) || !defined(REAPERAPI_MINIMAL)
7324 {(void**)&GetTakeEnvelope,"GetTakeEnvelope"},
7325 #endif
7326 #if defined(REAPERAPI_WANT_GetTakeEnvelopeByName) || !defined(REAPERAPI_MINIMAL)
7327 {(void**)&GetTakeEnvelopeByName,"GetTakeEnvelopeByName"},
7328 #endif
7329 #if defined(REAPERAPI_WANT_GetTakeName) || !defined(REAPERAPI_MINIMAL)
7330 {(void**)&GetTakeName,"GetTakeName"},
7331 #endif
7332 #if defined(REAPERAPI_WANT_GetTakeNumStretchMarkers) || !defined(REAPERAPI_MINIMAL)
7333 {(void**)&GetTakeNumStretchMarkers,"GetTakeNumStretchMarkers"},
7334 #endif
7335 #if defined(REAPERAPI_WANT_GetTakeStretchMarker) || !defined(REAPERAPI_MINIMAL)
7336 {(void**)&GetTakeStretchMarker,"GetTakeStretchMarker"},
7337 #endif
7338 #if defined(REAPERAPI_WANT_GetTakeStretchMarkerSlope) || !defined(REAPERAPI_MINIMAL)
7339 {(void**)&GetTakeStretchMarkerSlope,"GetTakeStretchMarkerSlope"},
7340 #endif
7341 #if defined(REAPERAPI_WANT_GetTCPFXParm) || !defined(REAPERAPI_MINIMAL)
7342 {(void**)&GetTCPFXParm,"GetTCPFXParm"},
7343 #endif
7344 #if defined(REAPERAPI_WANT_GetTempoMatchPlayRate) || !defined(REAPERAPI_MINIMAL)
7345 {(void**)&GetTempoMatchPlayRate,"GetTempoMatchPlayRate"},
7346 #endif
7347 #if defined(REAPERAPI_WANT_GetTempoTimeSigMarker) || !defined(REAPERAPI_MINIMAL)
7348 {(void**)&GetTempoTimeSigMarker,"GetTempoTimeSigMarker"},
7349 #endif
7350 #if defined(REAPERAPI_WANT_GetToggleCommandState) || !defined(REAPERAPI_MINIMAL)
7351 {(void**)&GetToggleCommandState,"GetToggleCommandState"},
7352 #endif
7353 #if defined(REAPERAPI_WANT_GetToggleCommandState2) || !defined(REAPERAPI_MINIMAL)
7354 {(void**)&GetToggleCommandState2,"GetToggleCommandState2"},
7355 #endif
7356 #if defined(REAPERAPI_WANT_GetToggleCommandStateEx) || !defined(REAPERAPI_MINIMAL)
7357 {(void**)&GetToggleCommandStateEx,"GetToggleCommandStateEx"},
7358 #endif
7359 #if defined(REAPERAPI_WANT_GetToggleCommandStateThroughHooks) || !defined(REAPERAPI_MINIMAL)
7360 {(void**)&GetToggleCommandStateThroughHooks,"GetToggleCommandStateThroughHooks"},
7361 #endif
7362 #if defined(REAPERAPI_WANT_GetTooltipWindow) || !defined(REAPERAPI_MINIMAL)
7363 {(void**)&GetTooltipWindow,"GetTooltipWindow"},
7364 #endif
7365 #if defined(REAPERAPI_WANT_GetTrack) || !defined(REAPERAPI_MINIMAL)
7366 {(void**)&GetTrack,"GetTrack"},
7367 #endif
7368 #if defined(REAPERAPI_WANT_GetTrackAutomationMode) || !defined(REAPERAPI_MINIMAL)
7369 {(void**)&GetTrackAutomationMode,"GetTrackAutomationMode"},
7370 #endif
7371 #if defined(REAPERAPI_WANT_GetTrackColor) || !defined(REAPERAPI_MINIMAL)
7372 {(void**)&GetTrackColor,"GetTrackColor"},
7373 #endif
7374 #if defined(REAPERAPI_WANT_GetTrackDepth) || !defined(REAPERAPI_MINIMAL)
7375 {(void**)&GetTrackDepth,"GetTrackDepth"},
7376 #endif
7377 #if defined(REAPERAPI_WANT_GetTrackEnvelope) || !defined(REAPERAPI_MINIMAL)
7378 {(void**)&GetTrackEnvelope,"GetTrackEnvelope"},
7379 #endif
7380 #if defined(REAPERAPI_WANT_GetTrackEnvelopeByChunkName) || !defined(REAPERAPI_MINIMAL)
7381 {(void**)&GetTrackEnvelopeByChunkName,"GetTrackEnvelopeByChunkName"},
7382 #endif
7383 #if defined(REAPERAPI_WANT_GetTrackEnvelopeByName) || !defined(REAPERAPI_MINIMAL)
7384 {(void**)&GetTrackEnvelopeByName,"GetTrackEnvelopeByName"},
7385 #endif
7386 #if defined(REAPERAPI_WANT_GetTrackGUID) || !defined(REAPERAPI_MINIMAL)
7387 {(void**)&GetTrackGUID,"GetTrackGUID"},
7388 #endif
7389 #if defined(REAPERAPI_WANT_GetTrackInfo) || !defined(REAPERAPI_MINIMAL)
7390 {(void**)&GetTrackInfo,"GetTrackInfo"},
7391 #endif
7392 #if defined(REAPERAPI_WANT_GetTrackMediaItem) || !defined(REAPERAPI_MINIMAL)
7393 {(void**)&GetTrackMediaItem,"GetTrackMediaItem"},
7394 #endif
7395 #if defined(REAPERAPI_WANT_GetTrackMIDILyrics) || !defined(REAPERAPI_MINIMAL)
7396 {(void**)&GetTrackMIDILyrics,"GetTrackMIDILyrics"},
7397 #endif
7398 #if defined(REAPERAPI_WANT_GetTrackMIDINoteName) || !defined(REAPERAPI_MINIMAL)
7399 {(void**)&GetTrackMIDINoteName,"GetTrackMIDINoteName"},
7400 #endif
7401 #if defined(REAPERAPI_WANT_GetTrackMIDINoteNameEx) || !defined(REAPERAPI_MINIMAL)
7402 {(void**)&GetTrackMIDINoteNameEx,"GetTrackMIDINoteNameEx"},
7403 #endif
7404 #if defined(REAPERAPI_WANT_GetTrackMIDINoteRange) || !defined(REAPERAPI_MINIMAL)
7405 {(void**)&GetTrackMIDINoteRange,"GetTrackMIDINoteRange"},
7406 #endif
7407 #if defined(REAPERAPI_WANT_GetTrackName) || !defined(REAPERAPI_MINIMAL)
7408 {(void**)&GetTrackName,"GetTrackName"},
7409 #endif
7410 #if defined(REAPERAPI_WANT_GetTrackNumMediaItems) || !defined(REAPERAPI_MINIMAL)
7411 {(void**)&GetTrackNumMediaItems,"GetTrackNumMediaItems"},
7412 #endif
7413 #if defined(REAPERAPI_WANT_GetTrackNumSends) || !defined(REAPERAPI_MINIMAL)
7414 {(void**)&GetTrackNumSends,"GetTrackNumSends"},
7415 #endif
7416 #if defined(REAPERAPI_WANT_GetTrackReceiveName) || !defined(REAPERAPI_MINIMAL)
7417 {(void**)&GetTrackReceiveName,"GetTrackReceiveName"},
7418 #endif
7419 #if defined(REAPERAPI_WANT_GetTrackReceiveUIMute) || !defined(REAPERAPI_MINIMAL)
7420 {(void**)&GetTrackReceiveUIMute,"GetTrackReceiveUIMute"},
7421 #endif
7422 #if defined(REAPERAPI_WANT_GetTrackReceiveUIVolPan) || !defined(REAPERAPI_MINIMAL)
7423 {(void**)&GetTrackReceiveUIVolPan,"GetTrackReceiveUIVolPan"},
7424 #endif
7425 #if defined(REAPERAPI_WANT_GetTrackSendInfo_Value) || !defined(REAPERAPI_MINIMAL)
7426 {(void**)&GetTrackSendInfo_Value,"GetTrackSendInfo_Value"},
7427 #endif
7428 #if defined(REAPERAPI_WANT_GetTrackSendName) || !defined(REAPERAPI_MINIMAL)
7429 {(void**)&GetTrackSendName,"GetTrackSendName"},
7430 #endif
7431 #if defined(REAPERAPI_WANT_GetTrackSendUIMute) || !defined(REAPERAPI_MINIMAL)
7432 {(void**)&GetTrackSendUIMute,"GetTrackSendUIMute"},
7433 #endif
7434 #if defined(REAPERAPI_WANT_GetTrackSendUIVolPan) || !defined(REAPERAPI_MINIMAL)
7435 {(void**)&GetTrackSendUIVolPan,"GetTrackSendUIVolPan"},
7436 #endif
7437 #if defined(REAPERAPI_WANT_GetTrackState) || !defined(REAPERAPI_MINIMAL)
7438 {(void**)&GetTrackState,"GetTrackState"},
7439 #endif
7440 #if defined(REAPERAPI_WANT_GetTrackStateChunk) || !defined(REAPERAPI_MINIMAL)
7441 {(void**)&GetTrackStateChunk,"GetTrackStateChunk"},
7442 #endif
7443 #if defined(REAPERAPI_WANT_GetTrackUIMute) || !defined(REAPERAPI_MINIMAL)
7444 {(void**)&GetTrackUIMute,"GetTrackUIMute"},
7445 #endif
7446 #if defined(REAPERAPI_WANT_GetTrackUIPan) || !defined(REAPERAPI_MINIMAL)
7447 {(void**)&GetTrackUIPan,"GetTrackUIPan"},
7448 #endif
7449 #if defined(REAPERAPI_WANT_GetTrackUIVolPan) || !defined(REAPERAPI_MINIMAL)
7450 {(void**)&GetTrackUIVolPan,"GetTrackUIVolPan"},
7451 #endif
7452 #if defined(REAPERAPI_WANT_GetUnderrunTime) || !defined(REAPERAPI_MINIMAL)
7453 {(void**)&GetUnderrunTime,"GetUnderrunTime"},
7454 #endif
7455 #if defined(REAPERAPI_WANT_GetUserFileNameForRead) || !defined(REAPERAPI_MINIMAL)
7456 {(void**)&GetUserFileNameForRead,"GetUserFileNameForRead"},
7457 #endif
7458 #if defined(REAPERAPI_WANT_GetUserInputs) || !defined(REAPERAPI_MINIMAL)
7459 {(void**)&GetUserInputs,"GetUserInputs"},
7460 #endif
7461 #if defined(REAPERAPI_WANT_GoToMarker) || !defined(REAPERAPI_MINIMAL)
7462 {(void**)&GoToMarker,"GoToMarker"},
7463 #endif
7464 #if defined(REAPERAPI_WANT_GoToRegion) || !defined(REAPERAPI_MINIMAL)
7465 {(void**)&GoToRegion,"GoToRegion"},
7466 #endif
7467 #if defined(REAPERAPI_WANT_GR_SelectColor) || !defined(REAPERAPI_MINIMAL)
7468 {(void**)&GR_SelectColor,"GR_SelectColor"},
7469 #endif
7470 #if defined(REAPERAPI_WANT_GSC_mainwnd) || !defined(REAPERAPI_MINIMAL)
7471 {(void**)&GSC_mainwnd,"GSC_mainwnd"},
7472 #endif
7473 #if defined(REAPERAPI_WANT_guidToString) || !defined(REAPERAPI_MINIMAL)
7474 {(void**)&guidToString,"guidToString"},
7475 #endif
7476 #if defined(REAPERAPI_WANT_HasExtState) || !defined(REAPERAPI_MINIMAL)
7477 {(void**)&HasExtState,"HasExtState"},
7478 #endif
7479 #if defined(REAPERAPI_WANT_HasTrackMIDIPrograms) || !defined(REAPERAPI_MINIMAL)
7480 {(void**)&HasTrackMIDIPrograms,"HasTrackMIDIPrograms"},
7481 #endif
7482 #if defined(REAPERAPI_WANT_HasTrackMIDIProgramsEx) || !defined(REAPERAPI_MINIMAL)
7483 {(void**)&HasTrackMIDIProgramsEx,"HasTrackMIDIProgramsEx"},
7484 #endif
7485 #if defined(REAPERAPI_WANT_Help_Set) || !defined(REAPERAPI_MINIMAL)
7486 {(void**)&Help_Set,"Help_Set"},
7487 #endif
7488 #if defined(REAPERAPI_WANT_HiresPeaksFromSource) || !defined(REAPERAPI_MINIMAL)
7489 {(void**)&HiresPeaksFromSource,"HiresPeaksFromSource"},
7490 #endif
7491 #if defined(REAPERAPI_WANT_image_resolve_fn) || !defined(REAPERAPI_MINIMAL)
7492 {(void**)&image_resolve_fn,"image_resolve_fn"},
7493 #endif
7494 #if defined(REAPERAPI_WANT_InsertAutomationItem) || !defined(REAPERAPI_MINIMAL)
7495 {(void**)&InsertAutomationItem,"InsertAutomationItem"},
7496 #endif
7497 #if defined(REAPERAPI_WANT_InsertEnvelopePoint) || !defined(REAPERAPI_MINIMAL)
7498 {(void**)&InsertEnvelopePoint,"InsertEnvelopePoint"},
7499 #endif
7500 #if defined(REAPERAPI_WANT_InsertEnvelopePointEx) || !defined(REAPERAPI_MINIMAL)
7501 {(void**)&InsertEnvelopePointEx,"InsertEnvelopePointEx"},
7502 #endif
7503 #if defined(REAPERAPI_WANT_InsertMedia) || !defined(REAPERAPI_MINIMAL)
7504 {(void**)&InsertMedia,"InsertMedia"},
7505 #endif
7506 #if defined(REAPERAPI_WANT_InsertMediaSection) || !defined(REAPERAPI_MINIMAL)
7507 {(void**)&InsertMediaSection,"InsertMediaSection"},
7508 #endif
7509 #if defined(REAPERAPI_WANT_InsertTrackAtIndex) || !defined(REAPERAPI_MINIMAL)
7510 {(void**)&InsertTrackAtIndex,"InsertTrackAtIndex"},
7511 #endif
7512 #if defined(REAPERAPI_WANT_IsInRealTimeAudio) || !defined(REAPERAPI_MINIMAL)
7513 {(void**)&IsInRealTimeAudio,"IsInRealTimeAudio"},
7514 #endif
7515 #if defined(REAPERAPI_WANT_IsItemTakeActiveForPlayback) || !defined(REAPERAPI_MINIMAL)
7516 {(void**)&IsItemTakeActiveForPlayback,"IsItemTakeActiveForPlayback"},
7517 #endif
7518 #if defined(REAPERAPI_WANT_IsMediaExtension) || !defined(REAPERAPI_MINIMAL)
7519 {(void**)&IsMediaExtension,"IsMediaExtension"},
7520 #endif
7521 #if defined(REAPERAPI_WANT_IsMediaItemSelected) || !defined(REAPERAPI_MINIMAL)
7522 {(void**)&IsMediaItemSelected,"IsMediaItemSelected"},
7523 #endif
7524 #if defined(REAPERAPI_WANT_IsProjectDirty) || !defined(REAPERAPI_MINIMAL)
7525 {(void**)&IsProjectDirty,"IsProjectDirty"},
7526 #endif
7527 #if defined(REAPERAPI_WANT_IsREAPER) || !defined(REAPERAPI_MINIMAL)
7528 {(void**)&IsREAPER,"IsREAPER"},
7529 #endif
7530 #if defined(REAPERAPI_WANT_IsTrackSelected) || !defined(REAPERAPI_MINIMAL)
7531 {(void**)&IsTrackSelected,"IsTrackSelected"},
7532 #endif
7533 #if defined(REAPERAPI_WANT_IsTrackVisible) || !defined(REAPERAPI_MINIMAL)
7534 {(void**)&IsTrackVisible,"IsTrackVisible"},
7535 #endif
7536 #if defined(REAPERAPI_WANT_joystick_create) || !defined(REAPERAPI_MINIMAL)
7537 {(void**)&joystick_create,"joystick_create"},
7538 #endif
7539 #if defined(REAPERAPI_WANT_joystick_destroy) || !defined(REAPERAPI_MINIMAL)
7540 {(void**)&joystick_destroy,"joystick_destroy"},
7541 #endif
7542 #if defined(REAPERAPI_WANT_joystick_enum) || !defined(REAPERAPI_MINIMAL)
7543 {(void**)&joystick_enum,"joystick_enum"},
7544 #endif
7545 #if defined(REAPERAPI_WANT_joystick_getaxis) || !defined(REAPERAPI_MINIMAL)
7546 {(void**)&joystick_getaxis,"joystick_getaxis"},
7547 #endif
7548 #if defined(REAPERAPI_WANT_joystick_getbuttonmask) || !defined(REAPERAPI_MINIMAL)
7549 {(void**)&joystick_getbuttonmask,"joystick_getbuttonmask"},
7550 #endif
7551 #if defined(REAPERAPI_WANT_joystick_getinfo) || !defined(REAPERAPI_MINIMAL)
7552 {(void**)&joystick_getinfo,"joystick_getinfo"},
7553 #endif
7554 #if defined(REAPERAPI_WANT_joystick_getpov) || !defined(REAPERAPI_MINIMAL)
7555 {(void**)&joystick_getpov,"joystick_getpov"},
7556 #endif
7557 #if defined(REAPERAPI_WANT_joystick_update) || !defined(REAPERAPI_MINIMAL)
7558 {(void**)&joystick_update,"joystick_update"},
7559 #endif
7560 #if defined(REAPERAPI_WANT_kbd_enumerateActions) || !defined(REAPERAPI_MINIMAL)
7561 {(void**)&kbd_enumerateActions,"kbd_enumerateActions"},
7562 #endif
7563 #if defined(REAPERAPI_WANT_kbd_formatKeyName) || !defined(REAPERAPI_MINIMAL)
7564 {(void**)&kbd_formatKeyName,"kbd_formatKeyName"},
7565 #endif
7566 #if defined(REAPERAPI_WANT_kbd_getCommandName) || !defined(REAPERAPI_MINIMAL)
7567 {(void**)&kbd_getCommandName,"kbd_getCommandName"},
7568 #endif
7569 #if defined(REAPERAPI_WANT_kbd_getTextFromCmd) || !defined(REAPERAPI_MINIMAL)
7570 {(void**)&kbd_getTextFromCmd,"kbd_getTextFromCmd"},
7571 #endif
7572 #if defined(REAPERAPI_WANT_KBD_OnMainActionEx) || !defined(REAPERAPI_MINIMAL)
7573 {(void**)&KBD_OnMainActionEx,"KBD_OnMainActionEx"},
7574 #endif
7575 #if defined(REAPERAPI_WANT_kbd_OnMidiEvent) || !defined(REAPERAPI_MINIMAL)
7576 {(void**)&kbd_OnMidiEvent,"kbd_OnMidiEvent"},
7577 #endif
7578 #if defined(REAPERAPI_WANT_kbd_OnMidiList) || !defined(REAPERAPI_MINIMAL)
7579 {(void**)&kbd_OnMidiList,"kbd_OnMidiList"},
7580 #endif
7581 #if defined(REAPERAPI_WANT_kbd_ProcessActionsMenu) || !defined(REAPERAPI_MINIMAL)
7582 {(void**)&kbd_ProcessActionsMenu,"kbd_ProcessActionsMenu"},
7583 #endif
7584 #if defined(REAPERAPI_WANT_kbd_processMidiEventActionEx) || !defined(REAPERAPI_MINIMAL)
7585 {(void**)&kbd_processMidiEventActionEx,"kbd_processMidiEventActionEx"},
7586 #endif
7587 #if defined(REAPERAPI_WANT_kbd_reprocessMenu) || !defined(REAPERAPI_MINIMAL)
7588 {(void**)&kbd_reprocessMenu,"kbd_reprocessMenu"},
7589 #endif
7590 #if defined(REAPERAPI_WANT_kbd_RunCommandThroughHooks) || !defined(REAPERAPI_MINIMAL)
7591 {(void**)&kbd_RunCommandThroughHooks,"kbd_RunCommandThroughHooks"},
7592 #endif
7593 #if defined(REAPERAPI_WANT_kbd_translateAccelerator) || !defined(REAPERAPI_MINIMAL)
7594 {(void**)&kbd_translateAccelerator,"kbd_translateAccelerator"},
7595 #endif
7596 #if defined(REAPERAPI_WANT_kbd_translateMouse) || !defined(REAPERAPI_MINIMAL)
7597 {(void**)&kbd_translateMouse,"kbd_translateMouse"},
7598 #endif
7599
7600
7601 #ifndef REAPERAPI_NO_LICE
7602 #if defined(REAPERAPI_WANT_LICE__Destroy) || !defined(REAPERAPI_MINIMAL)
7603 {(void**)&LICE__Destroy,"LICE__Destroy"},
7604 #endif
7605 #if defined(REAPERAPI_WANT_LICE__DestroyFont) || !defined(REAPERAPI_MINIMAL)
7606 {(void**)&LICE__DestroyFont,"LICE__DestroyFont"},
7607 #endif
7608 #if defined(REAPERAPI_WANT_LICE__DrawText) || !defined(REAPERAPI_MINIMAL)
7609 {(void**)&LICE__DrawText,"LICE__DrawText"},
7610 #endif
7611 #if defined(REAPERAPI_WANT_LICE__GetBits) || !defined(REAPERAPI_MINIMAL)
7612 {(void**)&LICE__GetBits,"LICE__GetBits"},
7613 #endif
7614 #if defined(REAPERAPI_WANT_LICE__GetDC) || !defined(REAPERAPI_MINIMAL)
7615 {(void**)&LICE__GetDC,"LICE__GetDC"},
7616 #endif
7617 #if defined(REAPERAPI_WANT_LICE__GetHeight) || !defined(REAPERAPI_MINIMAL)
7618 {(void**)&LICE__GetHeight,"LICE__GetHeight"},
7619 #endif
7620 #if defined(REAPERAPI_WANT_LICE__GetRowSpan) || !defined(REAPERAPI_MINIMAL)
7621 {(void**)&LICE__GetRowSpan,"LICE__GetRowSpan"},
7622 #endif
7623 #if defined(REAPERAPI_WANT_LICE__GetWidth) || !defined(REAPERAPI_MINIMAL)
7624 {(void**)&LICE__GetWidth,"LICE__GetWidth"},
7625 #endif
7626 #if defined(REAPERAPI_WANT_LICE__IsFlipped) || !defined(REAPERAPI_MINIMAL)
7627 {(void**)&LICE__IsFlipped,"LICE__IsFlipped"},
7628 #endif
7629 #if defined(REAPERAPI_WANT_LICE__resize) || !defined(REAPERAPI_MINIMAL)
7630 {(void**)&LICE__resize,"LICE__resize"},
7631 #endif
7632 #if defined(REAPERAPI_WANT_LICE__SetBkColor) || !defined(REAPERAPI_MINIMAL)
7633 {(void**)&LICE__SetBkColor,"LICE__SetBkColor"},
7634 #endif
7635 #if defined(REAPERAPI_WANT_LICE__SetFromHFont) || !defined(REAPERAPI_MINIMAL)
7636 {(void**)&LICE__SetFromHFont,"LICE__SetFromHFont"},
7637 #endif
7638 #if defined(REAPERAPI_WANT_LICE__SetTextColor) || !defined(REAPERAPI_MINIMAL)
7639 {(void**)&LICE__SetTextColor,"LICE__SetTextColor"},
7640 #endif
7641 #if defined(REAPERAPI_WANT_LICE__SetTextCombineMode) || !defined(REAPERAPI_MINIMAL)
7642 {(void**)&LICE__SetTextCombineMode,"LICE__SetTextCombineMode"},
7643 #endif
7644 #if defined(REAPERAPI_WANT_LICE_Arc) || !defined(REAPERAPI_MINIMAL)
7645 {(void**)&LICE_Arc,"LICE_Arc"},
7646 #endif
7647 #if defined(REAPERAPI_WANT_LICE_Blit) || !defined(REAPERAPI_MINIMAL)
7648 {(void**)&LICE_Blit,"LICE_Blit"},
7649 #endif
7650 #if defined(REAPERAPI_WANT_LICE_Blur) || !defined(REAPERAPI_MINIMAL)
7651 {(void**)&LICE_Blur,"LICE_Blur"},
7652 #endif
7653 #if defined(REAPERAPI_WANT_LICE_BorderedRect) || !defined(REAPERAPI_MINIMAL)
7654 {(void**)&LICE_BorderedRect,"LICE_BorderedRect"},
7655 #endif
7656 #if defined(REAPERAPI_WANT_LICE_Circle) || !defined(REAPERAPI_MINIMAL)
7657 {(void**)&LICE_Circle,"LICE_Circle"},
7658 #endif
7659 #if defined(REAPERAPI_WANT_LICE_Clear) || !defined(REAPERAPI_MINIMAL)
7660 {(void**)&LICE_Clear,"LICE_Clear"},
7661 #endif
7662 #if defined(REAPERAPI_WANT_LICE_ClearRect) || !defined(REAPERAPI_MINIMAL)
7663 {(void**)&LICE_ClearRect,"LICE_ClearRect"},
7664 #endif
7665 #if defined(REAPERAPI_WANT_LICE_ClipLine) || !defined(REAPERAPI_MINIMAL)
7666 {(void**)&LICE_ClipLine,"LICE_ClipLine"},
7667 #endif
7668 #if defined(REAPERAPI_WANT_LICE_Copy) || !defined(REAPERAPI_MINIMAL)
7669 {(void**)&LICE_Copy,"LICE_Copy"},
7670 #endif
7671 #if defined(REAPERAPI_WANT_LICE_CreateBitmap) || !defined(REAPERAPI_MINIMAL)
7672 {(void**)&LICE_CreateBitmap,"LICE_CreateBitmap"},
7673 #endif
7674 #if defined(REAPERAPI_WANT_LICE_CreateFont) || !defined(REAPERAPI_MINIMAL)
7675 {(void**)&LICE_CreateFont,"LICE_CreateFont"},
7676 #endif
7677 #if defined(REAPERAPI_WANT_LICE_DrawChar) || !defined(REAPERAPI_MINIMAL)
7678 {(void**)&LICE_DrawChar,"LICE_DrawChar"},
7679 #endif
7680 #if defined(REAPERAPI_WANT_LICE_DrawGlyph) || !defined(REAPERAPI_MINIMAL)
7681 {(void**)&LICE_DrawGlyph,"LICE_DrawGlyph"},
7682 #endif
7683 #if defined(REAPERAPI_WANT_LICE_DrawRect) || !defined(REAPERAPI_MINIMAL)
7684 {(void**)&LICE_DrawRect,"LICE_DrawRect"},
7685 #endif
7686 #if defined(REAPERAPI_WANT_LICE_DrawText) || !defined(REAPERAPI_MINIMAL)
7687 {(void**)&LICE_DrawText,"LICE_DrawText"},
7688 #endif
7689 #if defined(REAPERAPI_WANT_LICE_FillCircle) || !defined(REAPERAPI_MINIMAL)
7690 {(void**)&LICE_FillCircle,"LICE_FillCircle"},
7691 #endif
7692 #if defined(REAPERAPI_WANT_LICE_FillConvexPolygon) || !defined(REAPERAPI_MINIMAL)
7693 {(void**)&LICE_FillConvexPolygon,"LICE_FillConvexPolygon"},
7694 #endif
7695 #if defined(REAPERAPI_WANT_LICE_FillRect) || !defined(REAPERAPI_MINIMAL)
7696 {(void**)&LICE_FillRect,"LICE_FillRect"},
7697 #endif
7698 #if defined(REAPERAPI_WANT_LICE_FillTrapezoid) || !defined(REAPERAPI_MINIMAL)
7699 {(void**)&LICE_FillTrapezoid,"LICE_FillTrapezoid"},
7700 #endif
7701 #if defined(REAPERAPI_WANT_LICE_FillTriangle) || !defined(REAPERAPI_MINIMAL)
7702 {(void**)&LICE_FillTriangle,"LICE_FillTriangle"},
7703 #endif
7704 #if defined(REAPERAPI_WANT_LICE_GetPixel) || !defined(REAPERAPI_MINIMAL)
7705 {(void**)&LICE_GetPixel,"LICE_GetPixel"},
7706 #endif
7707 #if defined(REAPERAPI_WANT_LICE_GradRect) || !defined(REAPERAPI_MINIMAL)
7708 {(void**)&LICE_GradRect,"LICE_GradRect"},
7709 #endif
7710 #if defined(REAPERAPI_WANT_LICE_Line) || !defined(REAPERAPI_MINIMAL)
7711 {(void**)&LICE_Line,"LICE_Line"},
7712 #endif
7713 #if defined(REAPERAPI_WANT_LICE_LineInt) || !defined(REAPERAPI_MINIMAL)
7714 {(void**)&LICE_LineInt,"LICE_LineInt"},
7715 #endif
7716 #if defined(REAPERAPI_WANT_LICE_LoadPNG) || !defined(REAPERAPI_MINIMAL)
7717 {(void**)&LICE_LoadPNG,"LICE_LoadPNG"},
7718 #endif
7719 #if defined(REAPERAPI_WANT_LICE_LoadPNGFromResource) || !defined(REAPERAPI_MINIMAL)
7720 {(void**)&LICE_LoadPNGFromResource,"LICE_LoadPNGFromResource"},
7721 #endif
7722 #if defined(REAPERAPI_WANT_LICE_MeasureText) || !defined(REAPERAPI_MINIMAL)
7723 {(void**)&LICE_MeasureText,"LICE_MeasureText"},
7724 #endif
7725 #if defined(REAPERAPI_WANT_LICE_MultiplyAddRect) || !defined(REAPERAPI_MINIMAL)
7726 {(void**)&LICE_MultiplyAddRect,"LICE_MultiplyAddRect"},
7727 #endif
7728 #if defined(REAPERAPI_WANT_LICE_PutPixel) || !defined(REAPERAPI_MINIMAL)
7729 {(void**)&LICE_PutPixel,"LICE_PutPixel"},
7730 #endif
7731 #if defined(REAPERAPI_WANT_LICE_RotatedBlit) || !defined(REAPERAPI_MINIMAL)
7732 {(void**)&LICE_RotatedBlit,"LICE_RotatedBlit"},
7733 #endif
7734 #if defined(REAPERAPI_WANT_LICE_RoundRect) || !defined(REAPERAPI_MINIMAL)
7735 {(void**)&LICE_RoundRect,"LICE_RoundRect"},
7736 #endif
7737 #if defined(REAPERAPI_WANT_LICE_ScaledBlit) || !defined(REAPERAPI_MINIMAL)
7738 {(void**)&LICE_ScaledBlit,"LICE_ScaledBlit"},
7739 #endif
7740 #if defined(REAPERAPI_WANT_LICE_SimpleFill) || !defined(REAPERAPI_MINIMAL)
7741 {(void**)&LICE_SimpleFill,"LICE_SimpleFill"},
7742 #endif
7743
7744 #endif // !REAPERAPI_NO_LICE
7745
7746 #if defined(REAPERAPI_WANT_Loop_OnArrow) || !defined(REAPERAPI_MINIMAL)
7747 {(void**)&Loop_OnArrow,"Loop_OnArrow"},
7748 #endif
7749 #if defined(REAPERAPI_WANT_Main_OnCommand) || !defined(REAPERAPI_MINIMAL)
7750 {(void**)&Main_OnCommand,"Main_OnCommand"},
7751 #endif
7752 #if defined(REAPERAPI_WANT_Main_OnCommandEx) || !defined(REAPERAPI_MINIMAL)
7753 {(void**)&Main_OnCommandEx,"Main_OnCommandEx"},
7754 #endif
7755 #if defined(REAPERAPI_WANT_Main_openProject) || !defined(REAPERAPI_MINIMAL)
7756 {(void**)&Main_openProject,"Main_openProject"},
7757 #endif
7758 #if defined(REAPERAPI_WANT_Main_SaveProject) || !defined(REAPERAPI_MINIMAL)
7759 {(void**)&Main_SaveProject,"Main_SaveProject"},
7760 #endif
7761 #if defined(REAPERAPI_WANT_Main_UpdateLoopInfo) || !defined(REAPERAPI_MINIMAL)
7762 {(void**)&Main_UpdateLoopInfo,"Main_UpdateLoopInfo"},
7763 #endif
7764 #if defined(REAPERAPI_WANT_MarkProjectDirty) || !defined(REAPERAPI_MINIMAL)
7765 {(void**)&MarkProjectDirty,"MarkProjectDirty"},
7766 #endif
7767 #if defined(REAPERAPI_WANT_MarkTrackItemsDirty) || !defined(REAPERAPI_MINIMAL)
7768 {(void**)&MarkTrackItemsDirty,"MarkTrackItemsDirty"},
7769 #endif
7770 #if defined(REAPERAPI_WANT_Master_GetPlayRate) || !defined(REAPERAPI_MINIMAL)
7771 {(void**)&Master_GetPlayRate,"Master_GetPlayRate"},
7772 #endif
7773 #if defined(REAPERAPI_WANT_Master_GetPlayRateAtTime) || !defined(REAPERAPI_MINIMAL)
7774 {(void**)&Master_GetPlayRateAtTime,"Master_GetPlayRateAtTime"},
7775 #endif
7776 #if defined(REAPERAPI_WANT_Master_GetTempo) || !defined(REAPERAPI_MINIMAL)
7777 {(void**)&Master_GetTempo,"Master_GetTempo"},
7778 #endif
7779 #if defined(REAPERAPI_WANT_Master_NormalizePlayRate) || !defined(REAPERAPI_MINIMAL)
7780 {(void**)&Master_NormalizePlayRate,"Master_NormalizePlayRate"},
7781 #endif
7782 #if defined(REAPERAPI_WANT_Master_NormalizeTempo) || !defined(REAPERAPI_MINIMAL)
7783 {(void**)&Master_NormalizeTempo,"Master_NormalizeTempo"},
7784 #endif
7785 #if defined(REAPERAPI_WANT_MB) || !defined(REAPERAPI_MINIMAL)
7786 {(void**)&MB,"MB"},
7787 #endif
7788 #if defined(REAPERAPI_WANT_MediaItemDescendsFromTrack) || !defined(REAPERAPI_MINIMAL)
7789 {(void**)&MediaItemDescendsFromTrack,"MediaItemDescendsFromTrack"},
7790 #endif
7791 #if defined(REAPERAPI_WANT_MIDI_CountEvts) || !defined(REAPERAPI_MINIMAL)
7792 {(void**)&MIDI_CountEvts,"MIDI_CountEvts"},
7793 #endif
7794 #if defined(REAPERAPI_WANT_MIDI_DeleteCC) || !defined(REAPERAPI_MINIMAL)
7795 {(void**)&MIDI_DeleteCC,"MIDI_DeleteCC"},
7796 #endif
7797 #if defined(REAPERAPI_WANT_MIDI_DeleteEvt) || !defined(REAPERAPI_MINIMAL)
7798 {(void**)&MIDI_DeleteEvt,"MIDI_DeleteEvt"},
7799 #endif
7800 #if defined(REAPERAPI_WANT_MIDI_DeleteNote) || !defined(REAPERAPI_MINIMAL)
7801 {(void**)&MIDI_DeleteNote,"MIDI_DeleteNote"},
7802 #endif
7803 #if defined(REAPERAPI_WANT_MIDI_DeleteTextSysexEvt) || !defined(REAPERAPI_MINIMAL)
7804 {(void**)&MIDI_DeleteTextSysexEvt,"MIDI_DeleteTextSysexEvt"},
7805 #endif
7806 #if defined(REAPERAPI_WANT_MIDI_EnumSelCC) || !defined(REAPERAPI_MINIMAL)
7807 {(void**)&MIDI_EnumSelCC,"MIDI_EnumSelCC"},
7808 #endif
7809 #if defined(REAPERAPI_WANT_MIDI_EnumSelEvts) || !defined(REAPERAPI_MINIMAL)
7810 {(void**)&MIDI_EnumSelEvts,"MIDI_EnumSelEvts"},
7811 #endif
7812 #if defined(REAPERAPI_WANT_MIDI_EnumSelNotes) || !defined(REAPERAPI_MINIMAL)
7813 {(void**)&MIDI_EnumSelNotes,"MIDI_EnumSelNotes"},
7814 #endif
7815 #if defined(REAPERAPI_WANT_MIDI_EnumSelTextSysexEvts) || !defined(REAPERAPI_MINIMAL)
7816 {(void**)&MIDI_EnumSelTextSysexEvts,"MIDI_EnumSelTextSysexEvts"},
7817 #endif
7818 #if defined(REAPERAPI_WANT_MIDI_eventlist_Create) || !defined(REAPERAPI_MINIMAL)
7819 {(void**)&MIDI_eventlist_Create,"MIDI_eventlist_Create"},
7820 #endif
7821 #if defined(REAPERAPI_WANT_MIDI_eventlist_Destroy) || !defined(REAPERAPI_MINIMAL)
7822 {(void**)&MIDI_eventlist_Destroy,"MIDI_eventlist_Destroy"},
7823 #endif
7824 #if defined(REAPERAPI_WANT_MIDI_GetAllEvts) || !defined(REAPERAPI_MINIMAL)
7825 {(void**)&MIDI_GetAllEvts,"MIDI_GetAllEvts"},
7826 #endif
7827 #if defined(REAPERAPI_WANT_MIDI_GetCC) || !defined(REAPERAPI_MINIMAL)
7828 {(void**)&MIDI_GetCC,"MIDI_GetCC"},
7829 #endif
7830 #if defined(REAPERAPI_WANT_MIDI_GetEvt) || !defined(REAPERAPI_MINIMAL)
7831 {(void**)&MIDI_GetEvt,"MIDI_GetEvt"},
7832 #endif
7833 #if defined(REAPERAPI_WANT_MIDI_GetGrid) || !defined(REAPERAPI_MINIMAL)
7834 {(void**)&MIDI_GetGrid,"MIDI_GetGrid"},
7835 #endif
7836 #if defined(REAPERAPI_WANT_MIDI_GetHash) || !defined(REAPERAPI_MINIMAL)
7837 {(void**)&MIDI_GetHash,"MIDI_GetHash"},
7838 #endif
7839 #if defined(REAPERAPI_WANT_MIDI_GetNote) || !defined(REAPERAPI_MINIMAL)
7840 {(void**)&MIDI_GetNote,"MIDI_GetNote"},
7841 #endif
7842 #if defined(REAPERAPI_WANT_MIDI_GetPPQPos_EndOfMeasure) || !defined(REAPERAPI_MINIMAL)
7843 {(void**)&MIDI_GetPPQPos_EndOfMeasure,"MIDI_GetPPQPos_EndOfMeasure"},
7844 #endif
7845 #if defined(REAPERAPI_WANT_MIDI_GetPPQPos_StartOfMeasure) || !defined(REAPERAPI_MINIMAL)
7846 {(void**)&MIDI_GetPPQPos_StartOfMeasure,"MIDI_GetPPQPos_StartOfMeasure"},
7847 #endif
7848 #if defined(REAPERAPI_WANT_MIDI_GetPPQPosFromProjQN) || !defined(REAPERAPI_MINIMAL)
7849 {(void**)&MIDI_GetPPQPosFromProjQN,"MIDI_GetPPQPosFromProjQN"},
7850 #endif
7851 #if defined(REAPERAPI_WANT_MIDI_GetPPQPosFromProjTime) || !defined(REAPERAPI_MINIMAL)
7852 {(void**)&MIDI_GetPPQPosFromProjTime,"MIDI_GetPPQPosFromProjTime"},
7853 #endif
7854 #if defined(REAPERAPI_WANT_MIDI_GetProjQNFromPPQPos) || !defined(REAPERAPI_MINIMAL)
7855 {(void**)&MIDI_GetProjQNFromPPQPos,"MIDI_GetProjQNFromPPQPos"},
7856 #endif
7857 #if defined(REAPERAPI_WANT_MIDI_GetProjTimeFromPPQPos) || !defined(REAPERAPI_MINIMAL)
7858 {(void**)&MIDI_GetProjTimeFromPPQPos,"MIDI_GetProjTimeFromPPQPos"},
7859 #endif
7860 #if defined(REAPERAPI_WANT_MIDI_GetScale) || !defined(REAPERAPI_MINIMAL)
7861 {(void**)&MIDI_GetScale,"MIDI_GetScale"},
7862 #endif
7863 #if defined(REAPERAPI_WANT_MIDI_GetTextSysexEvt) || !defined(REAPERAPI_MINIMAL)
7864 {(void**)&MIDI_GetTextSysexEvt,"MIDI_GetTextSysexEvt"},
7865 #endif
7866 #if defined(REAPERAPI_WANT_MIDI_GetTrackHash) || !defined(REAPERAPI_MINIMAL)
7867 {(void**)&MIDI_GetTrackHash,"MIDI_GetTrackHash"},
7868 #endif
7869 #if defined(REAPERAPI_WANT_MIDI_InsertCC) || !defined(REAPERAPI_MINIMAL)
7870 {(void**)&MIDI_InsertCC,"MIDI_InsertCC"},
7871 #endif
7872 #if defined(REAPERAPI_WANT_MIDI_InsertEvt) || !defined(REAPERAPI_MINIMAL)
7873 {(void**)&MIDI_InsertEvt,"MIDI_InsertEvt"},
7874 #endif
7875 #if defined(REAPERAPI_WANT_MIDI_InsertNote) || !defined(REAPERAPI_MINIMAL)
7876 {(void**)&MIDI_InsertNote,"MIDI_InsertNote"},
7877 #endif
7878 #if defined(REAPERAPI_WANT_MIDI_InsertTextSysexEvt) || !defined(REAPERAPI_MINIMAL)
7879 {(void**)&MIDI_InsertTextSysexEvt,"MIDI_InsertTextSysexEvt"},
7880 #endif
7881 #if defined(REAPERAPI_WANT_midi_reinit) || !defined(REAPERAPI_MINIMAL)
7882 {(void**)&midi_reinit,"midi_reinit"},
7883 #endif
7884 #if defined(REAPERAPI_WANT_MIDI_SelectAll) || !defined(REAPERAPI_MINIMAL)
7885 {(void**)&MIDI_SelectAll,"MIDI_SelectAll"},
7886 #endif
7887 #if defined(REAPERAPI_WANT_MIDI_SetAllEvts) || !defined(REAPERAPI_MINIMAL)
7888 {(void**)&MIDI_SetAllEvts,"MIDI_SetAllEvts"},
7889 #endif
7890 #if defined(REAPERAPI_WANT_MIDI_SetCC) || !defined(REAPERAPI_MINIMAL)
7891 {(void**)&MIDI_SetCC,"MIDI_SetCC"},
7892 #endif
7893 #if defined(REAPERAPI_WANT_MIDI_SetEvt) || !defined(REAPERAPI_MINIMAL)
7894 {(void**)&MIDI_SetEvt,"MIDI_SetEvt"},
7895 #endif
7896 #if defined(REAPERAPI_WANT_MIDI_SetItemExtents) || !defined(REAPERAPI_MINIMAL)
7897 {(void**)&MIDI_SetItemExtents,"MIDI_SetItemExtents"},
7898 #endif
7899 #if defined(REAPERAPI_WANT_MIDI_SetNote) || !defined(REAPERAPI_MINIMAL)
7900 {(void**)&MIDI_SetNote,"MIDI_SetNote"},
7901 #endif
7902 #if defined(REAPERAPI_WANT_MIDI_SetTextSysexEvt) || !defined(REAPERAPI_MINIMAL)
7903 {(void**)&MIDI_SetTextSysexEvt,"MIDI_SetTextSysexEvt"},
7904 #endif
7905 #if defined(REAPERAPI_WANT_MIDI_Sort) || !defined(REAPERAPI_MINIMAL)
7906 {(void**)&MIDI_Sort,"MIDI_Sort"},
7907 #endif
7908 #if defined(REAPERAPI_WANT_MIDIEditor_GetActive) || !defined(REAPERAPI_MINIMAL)
7909 {(void**)&MIDIEditor_GetActive,"MIDIEditor_GetActive"},
7910 #endif
7911 #if defined(REAPERAPI_WANT_MIDIEditor_GetMode) || !defined(REAPERAPI_MINIMAL)
7912 {(void**)&MIDIEditor_GetMode,"MIDIEditor_GetMode"},
7913 #endif
7914 #if defined(REAPERAPI_WANT_MIDIEditor_GetSetting_int) || !defined(REAPERAPI_MINIMAL)
7915 {(void**)&MIDIEditor_GetSetting_int,"MIDIEditor_GetSetting_int"},
7916 #endif
7917 #if defined(REAPERAPI_WANT_MIDIEditor_GetSetting_str) || !defined(REAPERAPI_MINIMAL)
7918 {(void**)&MIDIEditor_GetSetting_str,"MIDIEditor_GetSetting_str"},
7919 #endif
7920 #if defined(REAPERAPI_WANT_MIDIEditor_GetTake) || !defined(REAPERAPI_MINIMAL)
7921 {(void**)&MIDIEditor_GetTake,"MIDIEditor_GetTake"},
7922 #endif
7923 #if defined(REAPERAPI_WANT_MIDIEditor_LastFocused_OnCommand) || !defined(REAPERAPI_MINIMAL)
7924 {(void**)&MIDIEditor_LastFocused_OnCommand,"MIDIEditor_LastFocused_OnCommand"},
7925 #endif
7926 #if defined(REAPERAPI_WANT_MIDIEditor_OnCommand) || !defined(REAPERAPI_MINIMAL)
7927 {(void**)&MIDIEditor_OnCommand,"MIDIEditor_OnCommand"},
7928 #endif
7929 #if defined(REAPERAPI_WANT_mkpanstr) || !defined(REAPERAPI_MINIMAL)
7930 {(void**)&mkpanstr,"mkpanstr"},
7931 #endif
7932 #if defined(REAPERAPI_WANT_mkvolpanstr) || !defined(REAPERAPI_MINIMAL)
7933 {(void**)&mkvolpanstr,"mkvolpanstr"},
7934 #endif
7935 #if defined(REAPERAPI_WANT_mkvolstr) || !defined(REAPERAPI_MINIMAL)
7936 {(void**)&mkvolstr,"mkvolstr"},
7937 #endif
7938 #if defined(REAPERAPI_WANT_MoveEditCursor) || !defined(REAPERAPI_MINIMAL)
7939 {(void**)&MoveEditCursor,"MoveEditCursor"},
7940 #endif
7941 #if defined(REAPERAPI_WANT_MoveMediaItemToTrack) || !defined(REAPERAPI_MINIMAL)
7942 {(void**)&MoveMediaItemToTrack,"MoveMediaItemToTrack"},
7943 #endif
7944 #if defined(REAPERAPI_WANT_MuteAllTracks) || !defined(REAPERAPI_MINIMAL)
7945 {(void**)&MuteAllTracks,"MuteAllTracks"},
7946 #endif
7947 #if defined(REAPERAPI_WANT_my_getViewport) || !defined(REAPERAPI_MINIMAL)
7948 {(void**)&my_getViewport,"my_getViewport"},
7949 #endif
7950 #if defined(REAPERAPI_WANT_NamedCommandLookup) || !defined(REAPERAPI_MINIMAL)
7951 {(void**)&NamedCommandLookup,"NamedCommandLookup"},
7952 #endif
7953 #if defined(REAPERAPI_WANT_OnPauseButton) || !defined(REAPERAPI_MINIMAL)
7954 {(void**)&OnPauseButton,"OnPauseButton"},
7955 #endif
7956 #if defined(REAPERAPI_WANT_OnPauseButtonEx) || !defined(REAPERAPI_MINIMAL)
7957 {(void**)&OnPauseButtonEx,"OnPauseButtonEx"},
7958 #endif
7959 #if defined(REAPERAPI_WANT_OnPlayButton) || !defined(REAPERAPI_MINIMAL)
7960 {(void**)&OnPlayButton,"OnPlayButton"},
7961 #endif
7962 #if defined(REAPERAPI_WANT_OnPlayButtonEx) || !defined(REAPERAPI_MINIMAL)
7963 {(void**)&OnPlayButtonEx,"OnPlayButtonEx"},
7964 #endif
7965 #if defined(REAPERAPI_WANT_OnStopButton) || !defined(REAPERAPI_MINIMAL)
7966 {(void**)&OnStopButton,"OnStopButton"},
7967 #endif
7968 #if defined(REAPERAPI_WANT_OnStopButtonEx) || !defined(REAPERAPI_MINIMAL)
7969 {(void**)&OnStopButtonEx,"OnStopButtonEx"},
7970 #endif
7971 #if defined(REAPERAPI_WANT_OpenColorThemeFile) || !defined(REAPERAPI_MINIMAL)
7972 {(void**)&OpenColorThemeFile,"OpenColorThemeFile"},
7973 #endif
7974 #if defined(REAPERAPI_WANT_OpenMediaExplorer) || !defined(REAPERAPI_MINIMAL)
7975 {(void**)&OpenMediaExplorer,"OpenMediaExplorer"},
7976 #endif
7977 #if defined(REAPERAPI_WANT_OscLocalMessageToHost) || !defined(REAPERAPI_MINIMAL)
7978 {(void**)&OscLocalMessageToHost,"OscLocalMessageToHost"},
7979 #endif
7980 #if defined(REAPERAPI_WANT_parse_timestr) || !defined(REAPERAPI_MINIMAL)
7981 {(void**)&parse_timestr,"parse_timestr"},
7982 #endif
7983 #if defined(REAPERAPI_WANT_parse_timestr_len) || !defined(REAPERAPI_MINIMAL)
7984 {(void**)&parse_timestr_len,"parse_timestr_len"},
7985 #endif
7986 #if defined(REAPERAPI_WANT_parse_timestr_pos) || !defined(REAPERAPI_MINIMAL)
7987 {(void**)&parse_timestr_pos,"parse_timestr_pos"},
7988 #endif
7989 #if defined(REAPERAPI_WANT_parsepanstr) || !defined(REAPERAPI_MINIMAL)
7990 {(void**)&parsepanstr,"parsepanstr"},
7991 #endif
7992 #if defined(REAPERAPI_WANT_PCM_Sink_Create) || !defined(REAPERAPI_MINIMAL)
7993 {(void**)&PCM_Sink_Create,"PCM_Sink_Create"},
7994 #endif
7995 #if defined(REAPERAPI_WANT_PCM_Sink_CreateEx) || !defined(REAPERAPI_MINIMAL)
7996 {(void**)&PCM_Sink_CreateEx,"PCM_Sink_CreateEx"},
7997 #endif
7998 #if defined(REAPERAPI_WANT_PCM_Sink_CreateMIDIFile) || !defined(REAPERAPI_MINIMAL)
7999 {(void**)&PCM_Sink_CreateMIDIFile,"PCM_Sink_CreateMIDIFile"},
8000 #endif
8001 #if defined(REAPERAPI_WANT_PCM_Sink_CreateMIDIFileEx) || !defined(REAPERAPI_MINIMAL)
8002 {(void**)&PCM_Sink_CreateMIDIFileEx,"PCM_Sink_CreateMIDIFileEx"},
8003 #endif
8004 #if defined(REAPERAPI_WANT_PCM_Sink_Enum) || !defined(REAPERAPI_MINIMAL)
8005 {(void**)&PCM_Sink_Enum,"PCM_Sink_Enum"},
8006 #endif
8007 #if defined(REAPERAPI_WANT_PCM_Sink_GetExtension) || !defined(REAPERAPI_MINIMAL)
8008 {(void**)&PCM_Sink_GetExtension,"PCM_Sink_GetExtension"},
8009 #endif
8010 #if defined(REAPERAPI_WANT_PCM_Sink_ShowConfig) || !defined(REAPERAPI_MINIMAL)
8011 {(void**)&PCM_Sink_ShowConfig,"PCM_Sink_ShowConfig"},
8012 #endif
8013 #if defined(REAPERAPI_WANT_PCM_Source_CreateFromFile) || !defined(REAPERAPI_MINIMAL)
8014 {(void**)&PCM_Source_CreateFromFile,"PCM_Source_CreateFromFile"},
8015 #endif
8016 #if defined(REAPERAPI_WANT_PCM_Source_CreateFromFileEx) || !defined(REAPERAPI_MINIMAL)
8017 {(void**)&PCM_Source_CreateFromFileEx,"PCM_Source_CreateFromFileEx"},
8018 #endif
8019 #if defined(REAPERAPI_WANT_PCM_Source_CreateFromSimple) || !defined(REAPERAPI_MINIMAL)
8020 {(void**)&PCM_Source_CreateFromSimple,"PCM_Source_CreateFromSimple"},
8021 #endif
8022 #if defined(REAPERAPI_WANT_PCM_Source_CreateFromType) || !defined(REAPERAPI_MINIMAL)
8023 {(void**)&PCM_Source_CreateFromType,"PCM_Source_CreateFromType"},
8024 #endif
8025 #if defined(REAPERAPI_WANT_PCM_Source_Destroy) || !defined(REAPERAPI_MINIMAL)
8026 {(void**)&PCM_Source_Destroy,"PCM_Source_Destroy"},
8027 #endif
8028 #if defined(REAPERAPI_WANT_PCM_Source_GetPeaks) || !defined(REAPERAPI_MINIMAL)
8029 {(void**)&PCM_Source_GetPeaks,"PCM_Source_GetPeaks"},
8030 #endif
8031 #if defined(REAPERAPI_WANT_PCM_Source_GetSectionInfo) || !defined(REAPERAPI_MINIMAL)
8032 {(void**)&PCM_Source_GetSectionInfo,"PCM_Source_GetSectionInfo"},
8033 #endif
8034 #if defined(REAPERAPI_WANT_PeakBuild_Create) || !defined(REAPERAPI_MINIMAL)
8035 {(void**)&PeakBuild_Create,"PeakBuild_Create"},
8036 #endif
8037 #if defined(REAPERAPI_WANT_PeakBuild_CreateEx) || !defined(REAPERAPI_MINIMAL)
8038 {(void**)&PeakBuild_CreateEx,"PeakBuild_CreateEx"},
8039 #endif
8040 #if defined(REAPERAPI_WANT_PeakGet_Create) || !defined(REAPERAPI_MINIMAL)
8041 {(void**)&PeakGet_Create,"PeakGet_Create"},
8042 #endif
8043 #if defined(REAPERAPI_WANT_PitchShiftSubModeMenu) || !defined(REAPERAPI_MINIMAL)
8044 {(void**)&PitchShiftSubModeMenu,"PitchShiftSubModeMenu"},
8045 #endif
8046 #if defined(REAPERAPI_WANT_PlayPreview) || !defined(REAPERAPI_MINIMAL)
8047 {(void**)&PlayPreview,"PlayPreview"},
8048 #endif
8049 #if defined(REAPERAPI_WANT_PlayPreviewEx) || !defined(REAPERAPI_MINIMAL)
8050 {(void**)&PlayPreviewEx,"PlayPreviewEx"},
8051 #endif
8052 #if defined(REAPERAPI_WANT_PlayTrackPreview) || !defined(REAPERAPI_MINIMAL)
8053 {(void**)&PlayTrackPreview,"PlayTrackPreview"},
8054 #endif
8055 #if defined(REAPERAPI_WANT_PlayTrackPreview2) || !defined(REAPERAPI_MINIMAL)
8056 {(void**)&PlayTrackPreview2,"PlayTrackPreview2"},
8057 #endif
8058 #if defined(REAPERAPI_WANT_PlayTrackPreview2Ex) || !defined(REAPERAPI_MINIMAL)
8059 {(void**)&PlayTrackPreview2Ex,"PlayTrackPreview2Ex"},
8060 #endif
8061 #if defined(REAPERAPI_WANT_plugin_getapi) || !defined(REAPERAPI_MINIMAL)
8062 {(void**)&plugin_getapi,"plugin_getapi"},
8063 #endif
8064 #if defined(REAPERAPI_WANT_plugin_getFilterList) || !defined(REAPERAPI_MINIMAL)
8065 {(void**)&plugin_getFilterList,"plugin_getFilterList"},
8066 #endif
8067 #if defined(REAPERAPI_WANT_plugin_getImportableProjectFilterList) || !defined(REAPERAPI_MINIMAL)
8068 {(void**)&plugin_getImportableProjectFilterList,"plugin_getImportableProjectFilterList"},
8069 #endif
8070 #if defined(REAPERAPI_WANT_plugin_register) || !defined(REAPERAPI_MINIMAL)
8071 {(void**)&plugin_register,"plugin_register"},
8072 #endif
8073 #if defined(REAPERAPI_WANT_PluginWantsAlwaysRunFx) || !defined(REAPERAPI_MINIMAL)
8074 {(void**)&PluginWantsAlwaysRunFx,"PluginWantsAlwaysRunFx"},
8075 #endif
8076 #if defined(REAPERAPI_WANT_PreventUIRefresh) || !defined(REAPERAPI_MINIMAL)
8077 {(void**)&PreventUIRefresh,"PreventUIRefresh"},
8078 #endif
8079 #if defined(REAPERAPI_WANT_projectconfig_var_addr) || !defined(REAPERAPI_MINIMAL)
8080 {(void**)&projectconfig_var_addr,"projectconfig_var_addr"},
8081 #endif
8082 #if defined(REAPERAPI_WANT_projectconfig_var_getoffs) || !defined(REAPERAPI_MINIMAL)
8083 {(void**)&projectconfig_var_getoffs,"projectconfig_var_getoffs"},
8084 #endif
8085 #if defined(REAPERAPI_WANT_ReaperGetPitchShiftAPI) || !defined(REAPERAPI_MINIMAL)
8086 {(void**)&ReaperGetPitchShiftAPI,"ReaperGetPitchShiftAPI"},
8087 #endif
8088 #if defined(REAPERAPI_WANT_ReaScriptError) || !defined(REAPERAPI_MINIMAL)
8089 {(void**)&ReaScriptError,"ReaScriptError"},
8090 #endif
8091 #if defined(REAPERAPI_WANT_RecursiveCreateDirectory) || !defined(REAPERAPI_MINIMAL)
8092 {(void**)&RecursiveCreateDirectory,"RecursiveCreateDirectory"},
8093 #endif
8094 #if defined(REAPERAPI_WANT_RefreshToolbar) || !defined(REAPERAPI_MINIMAL)
8095 {(void**)&RefreshToolbar,"RefreshToolbar"},
8096 #endif
8097 #if defined(REAPERAPI_WANT_RefreshToolbar2) || !defined(REAPERAPI_MINIMAL)
8098 {(void**)&RefreshToolbar2,"RefreshToolbar2"},
8099 #endif
8100 #if defined(REAPERAPI_WANT_relative_fn) || !defined(REAPERAPI_MINIMAL)
8101 {(void**)&relative_fn,"relative_fn"},
8102 #endif
8103 #if defined(REAPERAPI_WANT_RemoveTrackSend) || !defined(REAPERAPI_MINIMAL)
8104 {(void**)&RemoveTrackSend,"RemoveTrackSend"},
8105 #endif
8106 #if defined(REAPERAPI_WANT_RenderFileSection) || !defined(REAPERAPI_MINIMAL)
8107 {(void**)&RenderFileSection,"RenderFileSection"},
8108 #endif
8109 #if defined(REAPERAPI_WANT_Resample_EnumModes) || !defined(REAPERAPI_MINIMAL)
8110 {(void**)&Resample_EnumModes,"Resample_EnumModes"},
8111 #endif
8112 #if defined(REAPERAPI_WANT_Resampler_Create) || !defined(REAPERAPI_MINIMAL)
8113 {(void**)&Resampler_Create,"Resampler_Create"},
8114 #endif
8115 #if defined(REAPERAPI_WANT_resolve_fn) || !defined(REAPERAPI_MINIMAL)
8116 {(void**)&resolve_fn,"resolve_fn"},
8117 #endif
8118 #if defined(REAPERAPI_WANT_resolve_fn2) || !defined(REAPERAPI_MINIMAL)
8119 {(void**)&resolve_fn2,"resolve_fn2"},
8120 #endif
8121 #if defined(REAPERAPI_WANT_ReverseNamedCommandLookup) || !defined(REAPERAPI_MINIMAL)
8122 {(void**)&ReverseNamedCommandLookup,"ReverseNamedCommandLookup"},
8123 #endif
8124 #if defined(REAPERAPI_WANT_ScaleFromEnvelopeMode) || !defined(REAPERAPI_MINIMAL)
8125 {(void**)&ScaleFromEnvelopeMode,"ScaleFromEnvelopeMode"},
8126 #endif
8127 #if defined(REAPERAPI_WANT_ScaleToEnvelopeMode) || !defined(REAPERAPI_MINIMAL)
8128 {(void**)&ScaleToEnvelopeMode,"ScaleToEnvelopeMode"},
8129 #endif
8130 #if defined(REAPERAPI_WANT_screenset_register) || !defined(REAPERAPI_MINIMAL)
8131 {(void**)&screenset_register,"screenset_register"},
8132 #endif
8133 #if defined(REAPERAPI_WANT_screenset_registerNew) || !defined(REAPERAPI_MINIMAL)
8134 {(void**)&screenset_registerNew,"screenset_registerNew"},
8135 #endif
8136 #if defined(REAPERAPI_WANT_screenset_unregister) || !defined(REAPERAPI_MINIMAL)
8137 {(void**)&screenset_unregister,"screenset_unregister"},
8138 #endif
8139 #if defined(REAPERAPI_WANT_screenset_unregisterByParam) || !defined(REAPERAPI_MINIMAL)
8140 {(void**)&screenset_unregisterByParam,"screenset_unregisterByParam"},
8141 #endif
8142 #if defined(REAPERAPI_WANT_screenset_updateLastFocus) || !defined(REAPERAPI_MINIMAL)
8143 {(void**)&screenset_updateLastFocus,"screenset_updateLastFocus"},
8144 #endif
8145 #if defined(REAPERAPI_WANT_SectionFromUniqueID) || !defined(REAPERAPI_MINIMAL)
8146 {(void**)&SectionFromUniqueID,"SectionFromUniqueID"},
8147 #endif
8148 #if defined(REAPERAPI_WANT_SelectAllMediaItems) || !defined(REAPERAPI_MINIMAL)
8149 {(void**)&SelectAllMediaItems,"SelectAllMediaItems"},
8150 #endif
8151 #if defined(REAPERAPI_WANT_SelectProjectInstance) || !defined(REAPERAPI_MINIMAL)
8152 {(void**)&SelectProjectInstance,"SelectProjectInstance"},
8153 #endif
8154 #if defined(REAPERAPI_WANT_SendLocalOscMessage) || !defined(REAPERAPI_MINIMAL)
8155 {(void**)&SendLocalOscMessage,"SendLocalOscMessage"},
8156 #endif
8157 #if defined(REAPERAPI_WANT_SetActiveTake) || !defined(REAPERAPI_MINIMAL)
8158 {(void**)&SetActiveTake,"SetActiveTake"},
8159 #endif
8160 #if defined(REAPERAPI_WANT_SetAutomationMode) || !defined(REAPERAPI_MINIMAL)
8161 {(void**)&SetAutomationMode,"SetAutomationMode"},
8162 #endif
8163 #if defined(REAPERAPI_WANT_SetCurrentBPM) || !defined(REAPERAPI_MINIMAL)
8164 {(void**)&SetCurrentBPM,"SetCurrentBPM"},
8165 #endif
8166 #if defined(REAPERAPI_WANT_SetCursorContext) || !defined(REAPERAPI_MINIMAL)
8167 {(void**)&SetCursorContext,"SetCursorContext"},
8168 #endif
8169 #if defined(REAPERAPI_WANT_SetEditCurPos) || !defined(REAPERAPI_MINIMAL)
8170 {(void**)&SetEditCurPos,"SetEditCurPos"},
8171 #endif
8172 #if defined(REAPERAPI_WANT_SetEditCurPos2) || !defined(REAPERAPI_MINIMAL)
8173 {(void**)&SetEditCurPos2,"SetEditCurPos2"},
8174 #endif
8175 #if defined(REAPERAPI_WANT_SetEnvelopePoint) || !defined(REAPERAPI_MINIMAL)
8176 {(void**)&SetEnvelopePoint,"SetEnvelopePoint"},
8177 #endif
8178 #if defined(REAPERAPI_WANT_SetEnvelopePointEx) || !defined(REAPERAPI_MINIMAL)
8179 {(void**)&SetEnvelopePointEx,"SetEnvelopePointEx"},
8180 #endif
8181 #if defined(REAPERAPI_WANT_SetEnvelopeStateChunk) || !defined(REAPERAPI_MINIMAL)
8182 {(void**)&SetEnvelopeStateChunk,"SetEnvelopeStateChunk"},
8183 #endif
8184 #if defined(REAPERAPI_WANT_SetExtState) || !defined(REAPERAPI_MINIMAL)
8185 {(void**)&SetExtState,"SetExtState"},
8186 #endif
8187 #if defined(REAPERAPI_WANT_SetGlobalAutomationOverride) || !defined(REAPERAPI_MINIMAL)
8188 {(void**)&SetGlobalAutomationOverride,"SetGlobalAutomationOverride"},
8189 #endif
8190 #if defined(REAPERAPI_WANT_SetItemStateChunk) || !defined(REAPERAPI_MINIMAL)
8191 {(void**)&SetItemStateChunk,"SetItemStateChunk"},
8192 #endif
8193 #if defined(REAPERAPI_WANT_SetMasterTrackVisibility) || !defined(REAPERAPI_MINIMAL)
8194 {(void**)&SetMasterTrackVisibility,"SetMasterTrackVisibility"},
8195 #endif
8196 #if defined(REAPERAPI_WANT_SetMediaItemInfo_Value) || !defined(REAPERAPI_MINIMAL)
8197 {(void**)&SetMediaItemInfo_Value,"SetMediaItemInfo_Value"},
8198 #endif
8199 #if defined(REAPERAPI_WANT_SetMediaItemLength) || !defined(REAPERAPI_MINIMAL)
8200 {(void**)&SetMediaItemLength,"SetMediaItemLength"},
8201 #endif
8202 #if defined(REAPERAPI_WANT_SetMediaItemPosition) || !defined(REAPERAPI_MINIMAL)
8203 {(void**)&SetMediaItemPosition,"SetMediaItemPosition"},
8204 #endif
8205 #if defined(REAPERAPI_WANT_SetMediaItemSelected) || !defined(REAPERAPI_MINIMAL)
8206 {(void**)&SetMediaItemSelected,"SetMediaItemSelected"},
8207 #endif
8208 #if defined(REAPERAPI_WANT_SetMediaItemTake_Source) || !defined(REAPERAPI_MINIMAL)
8209 {(void**)&SetMediaItemTake_Source,"SetMediaItemTake_Source"},
8210 #endif
8211 #if defined(REAPERAPI_WANT_SetMediaItemTakeInfo_Value) || !defined(REAPERAPI_MINIMAL)
8212 {(void**)&SetMediaItemTakeInfo_Value,"SetMediaItemTakeInfo_Value"},
8213 #endif
8214 #if defined(REAPERAPI_WANT_SetMediaTrackInfo_Value) || !defined(REAPERAPI_MINIMAL)
8215 {(void**)&SetMediaTrackInfo_Value,"SetMediaTrackInfo_Value"},
8216 #endif
8217 #if defined(REAPERAPI_WANT_SetMIDIEditorGrid) || !defined(REAPERAPI_MINIMAL)
8218 {(void**)&SetMIDIEditorGrid,"SetMIDIEditorGrid"},
8219 #endif
8220 #if defined(REAPERAPI_WANT_SetMixerScroll) || !defined(REAPERAPI_MINIMAL)
8221 {(void**)&SetMixerScroll,"SetMixerScroll"},
8222 #endif
8223 #if defined(REAPERAPI_WANT_SetMouseModifier) || !defined(REAPERAPI_MINIMAL)
8224 {(void**)&SetMouseModifier,"SetMouseModifier"},
8225 #endif
8226 #if defined(REAPERAPI_WANT_SetOnlyTrackSelected) || !defined(REAPERAPI_MINIMAL)
8227 {(void**)&SetOnlyTrackSelected,"SetOnlyTrackSelected"},
8228 #endif
8229 #if defined(REAPERAPI_WANT_SetProjectGrid) || !defined(REAPERAPI_MINIMAL)
8230 {(void**)&SetProjectGrid,"SetProjectGrid"},
8231 #endif
8232 #if defined(REAPERAPI_WANT_SetProjectMarker) || !defined(REAPERAPI_MINIMAL)
8233 {(void**)&SetProjectMarker,"SetProjectMarker"},
8234 #endif
8235 #if defined(REAPERAPI_WANT_SetProjectMarker2) || !defined(REAPERAPI_MINIMAL)
8236 {(void**)&SetProjectMarker2,"SetProjectMarker2"},
8237 #endif
8238 #if defined(REAPERAPI_WANT_SetProjectMarker3) || !defined(REAPERAPI_MINIMAL)
8239 {(void**)&SetProjectMarker3,"SetProjectMarker3"},
8240 #endif
8241 #if defined(REAPERAPI_WANT_SetProjectMarker4) || !defined(REAPERAPI_MINIMAL)
8242 {(void**)&SetProjectMarker4,"SetProjectMarker4"},
8243 #endif
8244 #if defined(REAPERAPI_WANT_SetProjectMarkerByIndex) || !defined(REAPERAPI_MINIMAL)
8245 {(void**)&SetProjectMarkerByIndex,"SetProjectMarkerByIndex"},
8246 #endif
8247 #if defined(REAPERAPI_WANT_SetProjectMarkerByIndex2) || !defined(REAPERAPI_MINIMAL)
8248 {(void**)&SetProjectMarkerByIndex2,"SetProjectMarkerByIndex2"},
8249 #endif
8250 #if defined(REAPERAPI_WANT_SetProjExtState) || !defined(REAPERAPI_MINIMAL)
8251 {(void**)&SetProjExtState,"SetProjExtState"},
8252 #endif
8253 #if defined(REAPERAPI_WANT_SetRegionRenderMatrix) || !defined(REAPERAPI_MINIMAL)
8254 {(void**)&SetRegionRenderMatrix,"SetRegionRenderMatrix"},
8255 #endif
8256 #if defined(REAPERAPI_WANT_SetRenderLastError) || !defined(REAPERAPI_MINIMAL)
8257 {(void**)&SetRenderLastError,"SetRenderLastError"},
8258 #endif
8259 #if defined(REAPERAPI_WANT_SetTakeStretchMarker) || !defined(REAPERAPI_MINIMAL)
8260 {(void**)&SetTakeStretchMarker,"SetTakeStretchMarker"},
8261 #endif
8262 #if defined(REAPERAPI_WANT_SetTakeStretchMarkerSlope) || !defined(REAPERAPI_MINIMAL)
8263 {(void**)&SetTakeStretchMarkerSlope,"SetTakeStretchMarkerSlope"},
8264 #endif
8265 #if defined(REAPERAPI_WANT_SetTempoTimeSigMarker) || !defined(REAPERAPI_MINIMAL)
8266 {(void**)&SetTempoTimeSigMarker,"SetTempoTimeSigMarker"},
8267 #endif
8268 #if defined(REAPERAPI_WANT_SetToggleCommandState) || !defined(REAPERAPI_MINIMAL)
8269 {(void**)&SetToggleCommandState,"SetToggleCommandState"},
8270 #endif
8271 #if defined(REAPERAPI_WANT_SetTrackAutomationMode) || !defined(REAPERAPI_MINIMAL)
8272 {(void**)&SetTrackAutomationMode,"SetTrackAutomationMode"},
8273 #endif
8274 #if defined(REAPERAPI_WANT_SetTrackColor) || !defined(REAPERAPI_MINIMAL)
8275 {(void**)&SetTrackColor,"SetTrackColor"},
8276 #endif
8277 #if defined(REAPERAPI_WANT_SetTrackMIDILyrics) || !defined(REAPERAPI_MINIMAL)
8278 {(void**)&SetTrackMIDILyrics,"SetTrackMIDILyrics"},
8279 #endif
8280 #if defined(REAPERAPI_WANT_SetTrackMIDINoteName) || !defined(REAPERAPI_MINIMAL)
8281 {(void**)&SetTrackMIDINoteName,"SetTrackMIDINoteName"},
8282 #endif
8283 #if defined(REAPERAPI_WANT_SetTrackMIDINoteNameEx) || !defined(REAPERAPI_MINIMAL)
8284 {(void**)&SetTrackMIDINoteNameEx,"SetTrackMIDINoteNameEx"},
8285 #endif
8286 #if defined(REAPERAPI_WANT_SetTrackSelected) || !defined(REAPERAPI_MINIMAL)
8287 {(void**)&SetTrackSelected,"SetTrackSelected"},
8288 #endif
8289 #if defined(REAPERAPI_WANT_SetTrackSendInfo_Value) || !defined(REAPERAPI_MINIMAL)
8290 {(void**)&SetTrackSendInfo_Value,"SetTrackSendInfo_Value"},
8291 #endif
8292 #if defined(REAPERAPI_WANT_SetTrackSendUIPan) || !defined(REAPERAPI_MINIMAL)
8293 {(void**)&SetTrackSendUIPan,"SetTrackSendUIPan"},
8294 #endif
8295 #if defined(REAPERAPI_WANT_SetTrackSendUIVol) || !defined(REAPERAPI_MINIMAL)
8296 {(void**)&SetTrackSendUIVol,"SetTrackSendUIVol"},
8297 #endif
8298 #if defined(REAPERAPI_WANT_SetTrackStateChunk) || !defined(REAPERAPI_MINIMAL)
8299 {(void**)&SetTrackStateChunk,"SetTrackStateChunk"},
8300 #endif
8301 #if defined(REAPERAPI_WANT_ShowActionList) || !defined(REAPERAPI_MINIMAL)
8302 {(void**)&ShowActionList,"ShowActionList"},
8303 #endif
8304 #if defined(REAPERAPI_WANT_ShowConsoleMsg) || !defined(REAPERAPI_MINIMAL)
8305 {(void**)&ShowConsoleMsg,"ShowConsoleMsg"},
8306 #endif
8307 #if defined(REAPERAPI_WANT_ShowMessageBox) || !defined(REAPERAPI_MINIMAL)
8308 {(void**)&ShowMessageBox,"ShowMessageBox"},
8309 #endif
8310 #if defined(REAPERAPI_WANT_SLIDER2DB) || !defined(REAPERAPI_MINIMAL)
8311 {(void**)&SLIDER2DB,"SLIDER2DB"},
8312 #endif
8313 #if defined(REAPERAPI_WANT_SnapToGrid) || !defined(REAPERAPI_MINIMAL)
8314 {(void**)&SnapToGrid,"SnapToGrid"},
8315 #endif
8316 #if defined(REAPERAPI_WANT_SoloAllTracks) || !defined(REAPERAPI_MINIMAL)
8317 {(void**)&SoloAllTracks,"SoloAllTracks"},
8318 #endif
8319 #if defined(REAPERAPI_WANT_Splash_GetWnd) || !defined(REAPERAPI_MINIMAL)
8320 {(void**)&Splash_GetWnd,"Splash_GetWnd"},
8321 #endif
8322 #if defined(REAPERAPI_WANT_SplitMediaItem) || !defined(REAPERAPI_MINIMAL)
8323 {(void**)&SplitMediaItem,"SplitMediaItem"},
8324 #endif
8325 #if defined(REAPERAPI_WANT_StopPreview) || !defined(REAPERAPI_MINIMAL)
8326 {(void**)&StopPreview,"StopPreview"},
8327 #endif
8328 #if defined(REAPERAPI_WANT_StopTrackPreview) || !defined(REAPERAPI_MINIMAL)
8329 {(void**)&StopTrackPreview,"StopTrackPreview"},
8330 #endif
8331 #if defined(REAPERAPI_WANT_StopTrackPreview2) || !defined(REAPERAPI_MINIMAL)
8332 {(void**)&StopTrackPreview2,"StopTrackPreview2"},
8333 #endif
8334 #if defined(REAPERAPI_WANT_stringToGuid) || !defined(REAPERAPI_MINIMAL)
8335 {(void**)&stringToGuid,"stringToGuid"},
8336 #endif
8337 #if defined(REAPERAPI_WANT_StuffMIDIMessage) || !defined(REAPERAPI_MINIMAL)
8338 {(void**)&StuffMIDIMessage,"StuffMIDIMessage"},
8339 #endif
8340 #if defined(REAPERAPI_WANT_TakeFX_AddByName) || !defined(REAPERAPI_MINIMAL)
8341 {(void**)&TakeFX_AddByName,"TakeFX_AddByName"},
8342 #endif
8343 #if defined(REAPERAPI_WANT_TakeFX_EndParamEdit) || !defined(REAPERAPI_MINIMAL)
8344 {(void**)&TakeFX_EndParamEdit,"TakeFX_EndParamEdit"},
8345 #endif
8346 #if defined(REAPERAPI_WANT_TakeFX_FormatParamValue) || !defined(REAPERAPI_MINIMAL)
8347 {(void**)&TakeFX_FormatParamValue,"TakeFX_FormatParamValue"},
8348 #endif
8349 #if defined(REAPERAPI_WANT_TakeFX_FormatParamValueNormalized) || !defined(REAPERAPI_MINIMAL)
8350 {(void**)&TakeFX_FormatParamValueNormalized,"TakeFX_FormatParamValueNormalized"},
8351 #endif
8352 #if defined(REAPERAPI_WANT_TakeFX_GetChainVisible) || !defined(REAPERAPI_MINIMAL)
8353 {(void**)&TakeFX_GetChainVisible,"TakeFX_GetChainVisible"},
8354 #endif
8355 #if defined(REAPERAPI_WANT_TakeFX_GetCount) || !defined(REAPERAPI_MINIMAL)
8356 {(void**)&TakeFX_GetCount,"TakeFX_GetCount"},
8357 #endif
8358 #if defined(REAPERAPI_WANT_TakeFX_GetEnabled) || !defined(REAPERAPI_MINIMAL)
8359 {(void**)&TakeFX_GetEnabled,"TakeFX_GetEnabled"},
8360 #endif
8361 #if defined(REAPERAPI_WANT_TakeFX_GetEnvelope) || !defined(REAPERAPI_MINIMAL)
8362 {(void**)&TakeFX_GetEnvelope,"TakeFX_GetEnvelope"},
8363 #endif
8364 #if defined(REAPERAPI_WANT_TakeFX_GetFloatingWindow) || !defined(REAPERAPI_MINIMAL)
8365 {(void**)&TakeFX_GetFloatingWindow,"TakeFX_GetFloatingWindow"},
8366 #endif
8367 #if defined(REAPERAPI_WANT_TakeFX_GetFormattedParamValue) || !defined(REAPERAPI_MINIMAL)
8368 {(void**)&TakeFX_GetFormattedParamValue,"TakeFX_GetFormattedParamValue"},
8369 #endif
8370 #if defined(REAPERAPI_WANT_TakeFX_GetFXGUID) || !defined(REAPERAPI_MINIMAL)
8371 {(void**)&TakeFX_GetFXGUID,"TakeFX_GetFXGUID"},
8372 #endif
8373 #if defined(REAPERAPI_WANT_TakeFX_GetFXName) || !defined(REAPERAPI_MINIMAL)
8374 {(void**)&TakeFX_GetFXName,"TakeFX_GetFXName"},
8375 #endif
8376 #if defined(REAPERAPI_WANT_TakeFX_GetIOSize) || !defined(REAPERAPI_MINIMAL)
8377 {(void**)&TakeFX_GetIOSize,"TakeFX_GetIOSize"},
8378 #endif
8379 #if defined(REAPERAPI_WANT_TakeFX_GetNamedConfigParm) || !defined(REAPERAPI_MINIMAL)
8380 {(void**)&TakeFX_GetNamedConfigParm,"TakeFX_GetNamedConfigParm"},
8381 #endif
8382 #if defined(REAPERAPI_WANT_TakeFX_GetNumParams) || !defined(REAPERAPI_MINIMAL)
8383 {(void**)&TakeFX_GetNumParams,"TakeFX_GetNumParams"},
8384 #endif
8385 #if defined(REAPERAPI_WANT_TakeFX_GetOpen) || !defined(REAPERAPI_MINIMAL)
8386 {(void**)&TakeFX_GetOpen,"TakeFX_GetOpen"},
8387 #endif
8388 #if defined(REAPERAPI_WANT_TakeFX_GetParam) || !defined(REAPERAPI_MINIMAL)
8389 {(void**)&TakeFX_GetParam,"TakeFX_GetParam"},
8390 #endif
8391 #if defined(REAPERAPI_WANT_TakeFX_GetParameterStepSizes) || !defined(REAPERAPI_MINIMAL)
8392 {(void**)&TakeFX_GetParameterStepSizes,"TakeFX_GetParameterStepSizes"},
8393 #endif
8394 #if defined(REAPERAPI_WANT_TakeFX_GetParamEx) || !defined(REAPERAPI_MINIMAL)
8395 {(void**)&TakeFX_GetParamEx,"TakeFX_GetParamEx"},
8396 #endif
8397 #if defined(REAPERAPI_WANT_TakeFX_GetParamName) || !defined(REAPERAPI_MINIMAL)
8398 {(void**)&TakeFX_GetParamName,"TakeFX_GetParamName"},
8399 #endif
8400 #if defined(REAPERAPI_WANT_TakeFX_GetParamNormalized) || !defined(REAPERAPI_MINIMAL)
8401 {(void**)&TakeFX_GetParamNormalized,"TakeFX_GetParamNormalized"},
8402 #endif
8403 #if defined(REAPERAPI_WANT_TakeFX_GetPinMappings) || !defined(REAPERAPI_MINIMAL)
8404 {(void**)&TakeFX_GetPinMappings,"TakeFX_GetPinMappings"},
8405 #endif
8406 #if defined(REAPERAPI_WANT_TakeFX_GetPreset) || !defined(REAPERAPI_MINIMAL)
8407 {(void**)&TakeFX_GetPreset,"TakeFX_GetPreset"},
8408 #endif
8409 #if defined(REAPERAPI_WANT_TakeFX_GetPresetIndex) || !defined(REAPERAPI_MINIMAL)
8410 {(void**)&TakeFX_GetPresetIndex,"TakeFX_GetPresetIndex"},
8411 #endif
8412 #if defined(REAPERAPI_WANT_TakeFX_GetUserPresetFilename) || !defined(REAPERAPI_MINIMAL)
8413 {(void**)&TakeFX_GetUserPresetFilename,"TakeFX_GetUserPresetFilename"},
8414 #endif
8415 #if defined(REAPERAPI_WANT_TakeFX_NavigatePresets) || !defined(REAPERAPI_MINIMAL)
8416 {(void**)&TakeFX_NavigatePresets,"TakeFX_NavigatePresets"},
8417 #endif
8418 #if defined(REAPERAPI_WANT_TakeFX_SetEnabled) || !defined(REAPERAPI_MINIMAL)
8419 {(void**)&TakeFX_SetEnabled,"TakeFX_SetEnabled"},
8420 #endif
8421 #if defined(REAPERAPI_WANT_TakeFX_SetNamedConfigParm) || !defined(REAPERAPI_MINIMAL)
8422 {(void**)&TakeFX_SetNamedConfigParm,"TakeFX_SetNamedConfigParm"},
8423 #endif
8424 #if defined(REAPERAPI_WANT_TakeFX_SetOpen) || !defined(REAPERAPI_MINIMAL)
8425 {(void**)&TakeFX_SetOpen,"TakeFX_SetOpen"},
8426 #endif
8427 #if defined(REAPERAPI_WANT_TakeFX_SetParam) || !defined(REAPERAPI_MINIMAL)
8428 {(void**)&TakeFX_SetParam,"TakeFX_SetParam"},
8429 #endif
8430 #if defined(REAPERAPI_WANT_TakeFX_SetParamNormalized) || !defined(REAPERAPI_MINIMAL)
8431 {(void**)&TakeFX_SetParamNormalized,"TakeFX_SetParamNormalized"},
8432 #endif
8433 #if defined(REAPERAPI_WANT_TakeFX_SetPinMappings) || !defined(REAPERAPI_MINIMAL)
8434 {(void**)&TakeFX_SetPinMappings,"TakeFX_SetPinMappings"},
8435 #endif
8436 #if defined(REAPERAPI_WANT_TakeFX_SetPreset) || !defined(REAPERAPI_MINIMAL)
8437 {(void**)&TakeFX_SetPreset,"TakeFX_SetPreset"},
8438 #endif
8439 #if defined(REAPERAPI_WANT_TakeFX_SetPresetByIndex) || !defined(REAPERAPI_MINIMAL)
8440 {(void**)&TakeFX_SetPresetByIndex,"TakeFX_SetPresetByIndex"},
8441 #endif
8442 #if defined(REAPERAPI_WANT_TakeFX_Show) || !defined(REAPERAPI_MINIMAL)
8443 {(void**)&TakeFX_Show,"TakeFX_Show"},
8444 #endif
8445 #if defined(REAPERAPI_WANT_TakeIsMIDI) || !defined(REAPERAPI_MINIMAL)
8446 {(void**)&TakeIsMIDI,"TakeIsMIDI"},
8447 #endif
8448 #if defined(REAPERAPI_WANT_time_precise) || !defined(REAPERAPI_MINIMAL)
8449 {(void**)&time_precise,"time_precise"},
8450 #endif
8451 #if defined(REAPERAPI_WANT_TimeMap2_beatsToTime) || !defined(REAPERAPI_MINIMAL)
8452 {(void**)&TimeMap2_beatsToTime,"TimeMap2_beatsToTime"},
8453 #endif
8454 #if defined(REAPERAPI_WANT_TimeMap2_GetDividedBpmAtTime) || !defined(REAPERAPI_MINIMAL)
8455 {(void**)&TimeMap2_GetDividedBpmAtTime,"TimeMap2_GetDividedBpmAtTime"},
8456 #endif
8457 #if defined(REAPERAPI_WANT_TimeMap2_GetNextChangeTime) || !defined(REAPERAPI_MINIMAL)
8458 {(void**)&TimeMap2_GetNextChangeTime,"TimeMap2_GetNextChangeTime"},
8459 #endif
8460 #if defined(REAPERAPI_WANT_TimeMap2_QNToTime) || !defined(REAPERAPI_MINIMAL)
8461 {(void**)&TimeMap2_QNToTime,"TimeMap2_QNToTime"},
8462 #endif
8463 #if defined(REAPERAPI_WANT_TimeMap2_timeToBeats) || !defined(REAPERAPI_MINIMAL)
8464 {(void**)&TimeMap2_timeToBeats,"TimeMap2_timeToBeats"},
8465 #endif
8466 #if defined(REAPERAPI_WANT_TimeMap2_timeToQN) || !defined(REAPERAPI_MINIMAL)
8467 {(void**)&TimeMap2_timeToQN,"TimeMap2_timeToQN"},
8468 #endif
8469 #if defined(REAPERAPI_WANT_TimeMap_curFrameRate) || !defined(REAPERAPI_MINIMAL)
8470 {(void**)&TimeMap_curFrameRate,"TimeMap_curFrameRate"},
8471 #endif
8472 #if defined(REAPERAPI_WANT_TimeMap_GetDividedBpmAtTime) || !defined(REAPERAPI_MINIMAL)
8473 {(void**)&TimeMap_GetDividedBpmAtTime,"TimeMap_GetDividedBpmAtTime"},
8474 #endif
8475 #if defined(REAPERAPI_WANT_TimeMap_GetMeasureInfo) || !defined(REAPERAPI_MINIMAL)
8476 {(void**)&TimeMap_GetMeasureInfo,"TimeMap_GetMeasureInfo"},
8477 #endif
8478 #if defined(REAPERAPI_WANT_TimeMap_GetMetronomePattern) || !defined(REAPERAPI_MINIMAL)
8479 {(void**)&TimeMap_GetMetronomePattern,"TimeMap_GetMetronomePattern"},
8480 #endif
8481 #if defined(REAPERAPI_WANT_TimeMap_GetTimeSigAtTime) || !defined(REAPERAPI_MINIMAL)
8482 {(void**)&TimeMap_GetTimeSigAtTime,"TimeMap_GetTimeSigAtTime"},
8483 #endif
8484 #if defined(REAPERAPI_WANT_TimeMap_QNToMeasures) || !defined(REAPERAPI_MINIMAL)
8485 {(void**)&TimeMap_QNToMeasures,"TimeMap_QNToMeasures"},
8486 #endif
8487 #if defined(REAPERAPI_WANT_TimeMap_QNToTime) || !defined(REAPERAPI_MINIMAL)
8488 {(void**)&TimeMap_QNToTime,"TimeMap_QNToTime"},
8489 #endif
8490 #if defined(REAPERAPI_WANT_TimeMap_QNToTime_abs) || !defined(REAPERAPI_MINIMAL)
8491 {(void**)&TimeMap_QNToTime_abs,"TimeMap_QNToTime_abs"},
8492 #endif
8493 #if defined(REAPERAPI_WANT_TimeMap_timeToQN) || !defined(REAPERAPI_MINIMAL)
8494 {(void**)&TimeMap_timeToQN,"TimeMap_timeToQN"},
8495 #endif
8496 #if defined(REAPERAPI_WANT_TimeMap_timeToQN_abs) || !defined(REAPERAPI_MINIMAL)
8497 {(void**)&TimeMap_timeToQN_abs,"TimeMap_timeToQN_abs"},
8498 #endif
8499 #if defined(REAPERAPI_WANT_ToggleTrackSendUIMute) || !defined(REAPERAPI_MINIMAL)
8500 {(void**)&ToggleTrackSendUIMute,"ToggleTrackSendUIMute"},
8501 #endif
8502 #if defined(REAPERAPI_WANT_Track_GetPeakHoldDB) || !defined(REAPERAPI_MINIMAL)
8503 {(void**)&Track_GetPeakHoldDB,"Track_GetPeakHoldDB"},
8504 #endif
8505 #if defined(REAPERAPI_WANT_Track_GetPeakInfo) || !defined(REAPERAPI_MINIMAL)
8506 {(void**)&Track_GetPeakInfo,"Track_GetPeakInfo"},
8507 #endif
8508 #if defined(REAPERAPI_WANT_TrackCtl_SetToolTip) || !defined(REAPERAPI_MINIMAL)
8509 {(void**)&TrackCtl_SetToolTip,"TrackCtl_SetToolTip"},
8510 #endif
8511 #if defined(REAPERAPI_WANT_TrackFX_AddByName) || !defined(REAPERAPI_MINIMAL)
8512 {(void**)&TrackFX_AddByName,"TrackFX_AddByName"},
8513 #endif
8514 #if defined(REAPERAPI_WANT_TrackFX_EndParamEdit) || !defined(REAPERAPI_MINIMAL)
8515 {(void**)&TrackFX_EndParamEdit,"TrackFX_EndParamEdit"},
8516 #endif
8517 #if defined(REAPERAPI_WANT_TrackFX_FormatParamValue) || !defined(REAPERAPI_MINIMAL)
8518 {(void**)&TrackFX_FormatParamValue,"TrackFX_FormatParamValue"},
8519 #endif
8520 #if defined(REAPERAPI_WANT_TrackFX_FormatParamValueNormalized) || !defined(REAPERAPI_MINIMAL)
8521 {(void**)&TrackFX_FormatParamValueNormalized,"TrackFX_FormatParamValueNormalized"},
8522 #endif
8523 #if defined(REAPERAPI_WANT_TrackFX_GetByName) || !defined(REAPERAPI_MINIMAL)
8524 {(void**)&TrackFX_GetByName,"TrackFX_GetByName"},
8525 #endif
8526 #if defined(REAPERAPI_WANT_TrackFX_GetChainVisible) || !defined(REAPERAPI_MINIMAL)
8527 {(void**)&TrackFX_GetChainVisible,"TrackFX_GetChainVisible"},
8528 #endif
8529 #if defined(REAPERAPI_WANT_TrackFX_GetCount) || !defined(REAPERAPI_MINIMAL)
8530 {(void**)&TrackFX_GetCount,"TrackFX_GetCount"},
8531 #endif
8532 #if defined(REAPERAPI_WANT_TrackFX_GetEnabled) || !defined(REAPERAPI_MINIMAL)
8533 {(void**)&TrackFX_GetEnabled,"TrackFX_GetEnabled"},
8534 #endif
8535 #if defined(REAPERAPI_WANT_TrackFX_GetEQ) || !defined(REAPERAPI_MINIMAL)
8536 {(void**)&TrackFX_GetEQ,"TrackFX_GetEQ"},
8537 #endif
8538 #if defined(REAPERAPI_WANT_TrackFX_GetEQBandEnabled) || !defined(REAPERAPI_MINIMAL)
8539 {(void**)&TrackFX_GetEQBandEnabled,"TrackFX_GetEQBandEnabled"},
8540 #endif
8541 #if defined(REAPERAPI_WANT_TrackFX_GetEQParam) || !defined(REAPERAPI_MINIMAL)
8542 {(void**)&TrackFX_GetEQParam,"TrackFX_GetEQParam"},
8543 #endif
8544 #if defined(REAPERAPI_WANT_TrackFX_GetFloatingWindow) || !defined(REAPERAPI_MINIMAL)
8545 {(void**)&TrackFX_GetFloatingWindow,"TrackFX_GetFloatingWindow"},
8546 #endif
8547 #if defined(REAPERAPI_WANT_TrackFX_GetFormattedParamValue) || !defined(REAPERAPI_MINIMAL)
8548 {(void**)&TrackFX_GetFormattedParamValue,"TrackFX_GetFormattedParamValue"},
8549 #endif
8550 #if defined(REAPERAPI_WANT_TrackFX_GetFXGUID) || !defined(REAPERAPI_MINIMAL)
8551 {(void**)&TrackFX_GetFXGUID,"TrackFX_GetFXGUID"},
8552 #endif
8553 #if defined(REAPERAPI_WANT_TrackFX_GetFXName) || !defined(REAPERAPI_MINIMAL)
8554 {(void**)&TrackFX_GetFXName,"TrackFX_GetFXName"},
8555 #endif
8556 #if defined(REAPERAPI_WANT_TrackFX_GetInstrument) || !defined(REAPERAPI_MINIMAL)
8557 {(void**)&TrackFX_GetInstrument,"TrackFX_GetInstrument"},
8558 #endif
8559 #if defined(REAPERAPI_WANT_TrackFX_GetIOSize) || !defined(REAPERAPI_MINIMAL)
8560 {(void**)&TrackFX_GetIOSize,"TrackFX_GetIOSize"},
8561 #endif
8562 #if defined(REAPERAPI_WANT_TrackFX_GetNamedConfigParm) || !defined(REAPERAPI_MINIMAL)
8563 {(void**)&TrackFX_GetNamedConfigParm,"TrackFX_GetNamedConfigParm"},
8564 #endif
8565 #if defined(REAPERAPI_WANT_TrackFX_GetNumParams) || !defined(REAPERAPI_MINIMAL)
8566 {(void**)&TrackFX_GetNumParams,"TrackFX_GetNumParams"},
8567 #endif
8568 #if defined(REAPERAPI_WANT_TrackFX_GetOpen) || !defined(REAPERAPI_MINIMAL)
8569 {(void**)&TrackFX_GetOpen,"TrackFX_GetOpen"},
8570 #endif
8571 #if defined(REAPERAPI_WANT_TrackFX_GetParam) || !defined(REAPERAPI_MINIMAL)
8572 {(void**)&TrackFX_GetParam,"TrackFX_GetParam"},
8573 #endif
8574 #if defined(REAPERAPI_WANT_TrackFX_GetParameterStepSizes) || !defined(REAPERAPI_MINIMAL)
8575 {(void**)&TrackFX_GetParameterStepSizes,"TrackFX_GetParameterStepSizes"},
8576 #endif
8577 #if defined(REAPERAPI_WANT_TrackFX_GetParamEx) || !defined(REAPERAPI_MINIMAL)
8578 {(void**)&TrackFX_GetParamEx,"TrackFX_GetParamEx"},
8579 #endif
8580 #if defined(REAPERAPI_WANT_TrackFX_GetParamName) || !defined(REAPERAPI_MINIMAL)
8581 {(void**)&TrackFX_GetParamName,"TrackFX_GetParamName"},
8582 #endif
8583 #if defined(REAPERAPI_WANT_TrackFX_GetParamNormalized) || !defined(REAPERAPI_MINIMAL)
8584 {(void**)&TrackFX_GetParamNormalized,"TrackFX_GetParamNormalized"},
8585 #endif
8586 #if defined(REAPERAPI_WANT_TrackFX_GetPinMappings) || !defined(REAPERAPI_MINIMAL)
8587 {(void**)&TrackFX_GetPinMappings,"TrackFX_GetPinMappings"},
8588 #endif
8589 #if defined(REAPERAPI_WANT_TrackFX_GetPreset) || !defined(REAPERAPI_MINIMAL)
8590 {(void**)&TrackFX_GetPreset,"TrackFX_GetPreset"},
8591 #endif
8592 #if defined(REAPERAPI_WANT_TrackFX_GetPresetIndex) || !defined(REAPERAPI_MINIMAL)
8593 {(void**)&TrackFX_GetPresetIndex,"TrackFX_GetPresetIndex"},
8594 #endif
8595 #if defined(REAPERAPI_WANT_TrackFX_GetRecChainVisible) || !defined(REAPERAPI_MINIMAL)
8596 {(void**)&TrackFX_GetRecChainVisible,"TrackFX_GetRecChainVisible"},
8597 #endif
8598 #if defined(REAPERAPI_WANT_TrackFX_GetRecCount) || !defined(REAPERAPI_MINIMAL)
8599 {(void**)&TrackFX_GetRecCount,"TrackFX_GetRecCount"},
8600 #endif
8601 #if defined(REAPERAPI_WANT_TrackFX_GetUserPresetFilename) || !defined(REAPERAPI_MINIMAL)
8602 {(void**)&TrackFX_GetUserPresetFilename,"TrackFX_GetUserPresetFilename"},
8603 #endif
8604 #if defined(REAPERAPI_WANT_TrackFX_NavigatePresets) || !defined(REAPERAPI_MINIMAL)
8605 {(void**)&TrackFX_NavigatePresets,"TrackFX_NavigatePresets"},
8606 #endif
8607 #if defined(REAPERAPI_WANT_TrackFX_SetEnabled) || !defined(REAPERAPI_MINIMAL)
8608 {(void**)&TrackFX_SetEnabled,"TrackFX_SetEnabled"},
8609 #endif
8610 #if defined(REAPERAPI_WANT_TrackFX_SetEQBandEnabled) || !defined(REAPERAPI_MINIMAL)
8611 {(void**)&TrackFX_SetEQBandEnabled,"TrackFX_SetEQBandEnabled"},
8612 #endif
8613 #if defined(REAPERAPI_WANT_TrackFX_SetEQParam) || !defined(REAPERAPI_MINIMAL)
8614 {(void**)&TrackFX_SetEQParam,"TrackFX_SetEQParam"},
8615 #endif
8616 #if defined(REAPERAPI_WANT_TrackFX_SetNamedConfigParm) || !defined(REAPERAPI_MINIMAL)
8617 {(void**)&TrackFX_SetNamedConfigParm,"TrackFX_SetNamedConfigParm"},
8618 #endif
8619 #if defined(REAPERAPI_WANT_TrackFX_SetOpen) || !defined(REAPERAPI_MINIMAL)
8620 {(void**)&TrackFX_SetOpen,"TrackFX_SetOpen"},
8621 #endif
8622 #if defined(REAPERAPI_WANT_TrackFX_SetParam) || !defined(REAPERAPI_MINIMAL)
8623 {(void**)&TrackFX_SetParam,"TrackFX_SetParam"},
8624 #endif
8625 #if defined(REAPERAPI_WANT_TrackFX_SetParamNormalized) || !defined(REAPERAPI_MINIMAL)
8626 {(void**)&TrackFX_SetParamNormalized,"TrackFX_SetParamNormalized"},
8627 #endif
8628 #if defined(REAPERAPI_WANT_TrackFX_SetPinMappings) || !defined(REAPERAPI_MINIMAL)
8629 {(void**)&TrackFX_SetPinMappings,"TrackFX_SetPinMappings"},
8630 #endif
8631 #if defined(REAPERAPI_WANT_TrackFX_SetPreset) || !defined(REAPERAPI_MINIMAL)
8632 {(void**)&TrackFX_SetPreset,"TrackFX_SetPreset"},
8633 #endif
8634 #if defined(REAPERAPI_WANT_TrackFX_SetPresetByIndex) || !defined(REAPERAPI_MINIMAL)
8635 {(void**)&TrackFX_SetPresetByIndex,"TrackFX_SetPresetByIndex"},
8636 #endif
8637 #if defined(REAPERAPI_WANT_TrackFX_Show) || !defined(REAPERAPI_MINIMAL)
8638 {(void**)&TrackFX_Show,"TrackFX_Show"},
8639 #endif
8640 #if defined(REAPERAPI_WANT_TrackList_AdjustWindows) || !defined(REAPERAPI_MINIMAL)
8641 {(void**)&TrackList_AdjustWindows,"TrackList_AdjustWindows"},
8642 #endif
8643 #if defined(REAPERAPI_WANT_TrackList_UpdateAllExternalSurfaces) || !defined(REAPERAPI_MINIMAL)
8644 {(void**)&TrackList_UpdateAllExternalSurfaces,"TrackList_UpdateAllExternalSurfaces"},
8645 #endif
8646 #if defined(REAPERAPI_WANT_Undo_BeginBlock) || !defined(REAPERAPI_MINIMAL)
8647 {(void**)&Undo_BeginBlock,"Undo_BeginBlock"},
8648 #endif
8649 #if defined(REAPERAPI_WANT_Undo_BeginBlock2) || !defined(REAPERAPI_MINIMAL)
8650 {(void**)&Undo_BeginBlock2,"Undo_BeginBlock2"},
8651 #endif
8652 #if defined(REAPERAPI_WANT_Undo_CanRedo2) || !defined(REAPERAPI_MINIMAL)
8653 {(void**)&Undo_CanRedo2,"Undo_CanRedo2"},
8654 #endif
8655 #if defined(REAPERAPI_WANT_Undo_CanUndo2) || !defined(REAPERAPI_MINIMAL)
8656 {(void**)&Undo_CanUndo2,"Undo_CanUndo2"},
8657 #endif
8658 #if defined(REAPERAPI_WANT_Undo_DoRedo2) || !defined(REAPERAPI_MINIMAL)
8659 {(void**)&Undo_DoRedo2,"Undo_DoRedo2"},
8660 #endif
8661 #if defined(REAPERAPI_WANT_Undo_DoUndo2) || !defined(REAPERAPI_MINIMAL)
8662 {(void**)&Undo_DoUndo2,"Undo_DoUndo2"},
8663 #endif
8664 #if defined(REAPERAPI_WANT_Undo_EndBlock) || !defined(REAPERAPI_MINIMAL)
8665 {(void**)&Undo_EndBlock,"Undo_EndBlock"},
8666 #endif
8667 #if defined(REAPERAPI_WANT_Undo_EndBlock2) || !defined(REAPERAPI_MINIMAL)
8668 {(void**)&Undo_EndBlock2,"Undo_EndBlock2"},
8669 #endif
8670 #if defined(REAPERAPI_WANT_Undo_OnStateChange) || !defined(REAPERAPI_MINIMAL)
8671 {(void**)&Undo_OnStateChange,"Undo_OnStateChange"},
8672 #endif
8673 #if defined(REAPERAPI_WANT_Undo_OnStateChange2) || !defined(REAPERAPI_MINIMAL)
8674 {(void**)&Undo_OnStateChange2,"Undo_OnStateChange2"},
8675 #endif
8676 #if defined(REAPERAPI_WANT_Undo_OnStateChange_Item) || !defined(REAPERAPI_MINIMAL)
8677 {(void**)&Undo_OnStateChange_Item,"Undo_OnStateChange_Item"},
8678 #endif
8679 #if defined(REAPERAPI_WANT_Undo_OnStateChangeEx) || !defined(REAPERAPI_MINIMAL)
8680 {(void**)&Undo_OnStateChangeEx,"Undo_OnStateChangeEx"},
8681 #endif
8682 #if defined(REAPERAPI_WANT_Undo_OnStateChangeEx2) || !defined(REAPERAPI_MINIMAL)
8683 {(void**)&Undo_OnStateChangeEx2,"Undo_OnStateChangeEx2"},
8684 #endif
8685 #if defined(REAPERAPI_WANT_update_disk_counters) || !defined(REAPERAPI_MINIMAL)
8686 {(void**)&update_disk_counters,"update_disk_counters"},
8687 #endif
8688 #if defined(REAPERAPI_WANT_UpdateArrange) || !defined(REAPERAPI_MINIMAL)
8689 {(void**)&UpdateArrange,"UpdateArrange"},
8690 #endif
8691 #if defined(REAPERAPI_WANT_UpdateItemInProject) || !defined(REAPERAPI_MINIMAL)
8692 {(void**)&UpdateItemInProject,"UpdateItemInProject"},
8693 #endif
8694 #if defined(REAPERAPI_WANT_UpdateTimeline) || !defined(REAPERAPI_MINIMAL)
8695 {(void**)&UpdateTimeline,"UpdateTimeline"},
8696 #endif
8697 #if defined(REAPERAPI_WANT_ValidatePtr) || !defined(REAPERAPI_MINIMAL)
8698 {(void**)&ValidatePtr,"ValidatePtr"},
8699 #endif
8700 #if defined(REAPERAPI_WANT_ValidatePtr2) || !defined(REAPERAPI_MINIMAL)
8701 {(void**)&ValidatePtr2,"ValidatePtr2"},
8702 #endif
8703 #if defined(REAPERAPI_WANT_ViewPrefs) || !defined(REAPERAPI_MINIMAL)
8704 {(void**)&ViewPrefs,"ViewPrefs"},
8705 #endif
8706 #if defined(REAPERAPI_WANT_WDL_VirtualWnd_ScaledBlitBG) || !defined(REAPERAPI_MINIMAL)
8707 {(void**)&WDL_VirtualWnd_ScaledBlitBG,"WDL_VirtualWnd_ScaledBlitBG"},
8708 #endif
8709 {NULL, NULL}
8710 };
8711 int i,failcnt=0;
8712 for (i=0;table[i].dest; i++)
8713 failcnt += !(*table[i].dest = getAPI(table[i].name));
8714 return failcnt;
8715 }
8716#else//REAPERAPI_IMPLEMENT
8717 int REAPERAPI_LoadAPI(void *(*getAPI)(const char *));
8718#endif
8719#endif // _REAPER_PLUGIN_FUNCTIONS_H_