ReaScripts: Notes and references.. (share here..)

Discussion in 'Reaper' started by Futurewine, May 6, 2021.

  1. Futurewine

    Futurewine Audiosexual

    Joined:
    Oct 4, 2017
    Messages:
    888
    Likes Received:
    558
    Location:
    Sound City Labs
    This thread is about sharing notes and references to ReaScript. Feel free to write tutor here if you like, much appreciated :shalom:. #happyscripting ~

    Latest: --->

     
    Last edited: May 13, 2021
    • Like Like x 2
    • Interesting Interesting x 2
    • List
  2.  
  3. Futurewine

    Futurewine Audiosexual

    Joined:
    Oct 4, 2017
    Messages:
    888
    Likes Received:
    558
    Location:
    Sound City Labs
    References: The Configuration-Variables
    https://mespotin.uber.space/Ultraschall/Reaper_Config_Variables.html

    How to manipulate (using lua by example):
    Originally Posted by nofish: https://forums.cockos.com/showpost.php?p=2240152&postcount=2
    PHP:
    -- QUERY
    state 
    reaper.SNM_GetIntConfigVar("projshowgrid", -666)&-- bitwise AND, query bitreturns 4/non zero if enabledif disabled

    -- TOGGLE
    -- toggleOK reaper.SNM_SetIntConfigVar("projshowgrid"reaper.SNM_GetIntConfigVar("projshowgrid", -666)~4) -- bitwise NOT XOR (exclusive OR), flip bit

    -- ENABLE
    -- enableOK reaper.SNM_SetIntConfigVar("projshowgrid"reaper.SNM_GetIntConfigVar("projshowgrid", -666)|4) -- bitwise OR, set bit

    -- DISABLE
    -- disableOK reaper.SNM_SetIntConfigVar("projshowgrid", (reaper.SNM_GetIntConfigVar("projshowgrid", -666)&(~4))) -- bitwise AND NOTclear bit
    Note for writing in EEL script:

    :shalom:
     
    Last edited: May 7, 2021
  4. Futurewine

    Futurewine Audiosexual

    Joined:
    Oct 4, 2017
    Messages:
    888
    Likes Received:
    558
    Location:
    Sound City Labs
    File reading in EEL2 (example)
    Originally Posted by spk77: https://forum.cockos.com/showpost.php?p=1348960&postcount=2
    PHP:
    function msg_s(m)
    (
      
    ShowConsoleMsg(m);
      
    //ShowConsoleMsg("\n");
    );

    function 
    read_lines(file_name)
    (
      (
    file fopen(file_name"r")) ? (
        while(
    feof(file) == 0) ( // feof(file) returns nonzero if the file fp is at the end of file.
          
    fgets(file#line); // read the file line by line
          #lines += #line;
        
    );
        
    fclose(file);
        
    msg_s(#lines);
      
    );
    );

    file_name "C:/EEL scripts/Read lines test.txt"// edit this line (it seems that backslashes don't work in "file_name")
    read_lines(file_name);
     
    Last edited: May 7, 2021
  5. Futurewine

    Futurewine Audiosexual

    Joined:
    Oct 4, 2017
    Messages:
    888
    Likes Received:
    558
    Location:
    Sound City Labs
    Formula: Convert db to val, val to db (LUA):
    originally posted by spk77: https://forum.cockos.com/showpost.php?p=1608719&postcount=6
    PHP:
    val_to_dB = function(val) return 20*math.log(val10end
    dB_to_val 
    = function(dB_val) return 10^(dB_val/20end

    -- test
    some_dB_val 
    val_to_dB(2) -- should be ~6.02 dB
    some_dB_val_to_val 
    dB_to_val(some_dB_val) -- should be "2"
     
  6. Futurewine

    Futurewine Audiosexual

    Joined:
    Oct 4, 2017
    Messages:
    888
    Likes Received:
    558
    Location:
    Sound City Labs
  7. Futurewine

    Futurewine Audiosexual

    Joined:
    Oct 4, 2017
    Messages:
    888
    Likes Received:
    558
    Location:
    Sound City Labs
    EEL2 Template: ReaImGui: ReaScript binding for Dear ImGui
    credits: cfillion : https://forum.cockos.com/showthread.php?t=250419

    notes: hell i've no idea yet how to use thos extension.. the example here is a simplified result from ~studying~ the example script from: Script: ReaImGui_Hello World.eel (included in reapack download.. search: reapack imgui or visit forum link for more infos.. :shalom:)

    PHP:
    // EEL2 Template: ReaImGui
    // REAPER 6.24 or newer only!

    FLT_MIN 0.0001// 1.17549e-38

    ctx ImGui_CreateContext("Hello World!"500420);

    function 
    update() (
      
    viewport ImGui_GetMainViewport(ctx);
     
      
    ImGui_Viewport_GetPos(viewportxy);
      
    ImGui_SetNextWindowPos(ctxxy);
     
      
    ImGui_Viewport_GetSize(viewportwh);
      
    ImGui_SetNextWindowSize(ctxwh);
     
      
    ImGui_Begin(ctx"main"0ImGui_WindowFlags_NoDecoration()) ? (

        
    // ========== Start stuffing your GUIs here.. ========== //

        
    ImGui_Text(ctx"Hello World!");

        
    // ========== End stuffing your GUIs here.. ========== //

      
    );
     
      
    ImGui_End(ctx);
    );

    function 
    loop() (
      
    ImGui_IsCloseRequested(ctx) ?
        
    ImGui_DestroyContext(ctx) : (
        
    update();
        
    defer("loop()");
      )
    );

    defer("loop()");
    [​IMG]
     
    Last edited: May 7, 2021
  8. Futurewine

    Futurewine Audiosexual

    Joined:
    Oct 4, 2017
    Messages:
    888
    Likes Received:
    558
    Location:
    Sound City Labs
    Hellyea buddy! i demystified this.. have fun :shalom:

    Python Example: ReaImGui: ReaScript (by Futurewine)

    reference and credits: cfilion: https://github.com/cfillion/reaimgui/blob/master/examples/track_manager.py

    PHP:
    sys.path.append(RPR_GetResourcePath() + "/Scripts/ReaTeam Extensions/API")

    from imgui_python import *

    FLT_MIN 1.17549e-38

    def init
    ():
        global 
    ctxviewport
        ctx 
    ImGui_CreateContext("Hello World"320240)[0]
        
    viewport ImGui_GetMainViewport(ctx)
        
    loop()
      
    def loop():
        if 
    ImGui_IsCloseRequested(ctx):
            
    ImGui_DestroyContext(ctx)
            return

        
    _xImGui_Viewport_GetPos(viewport)
        
    ImGui_SetNextWindowPos(ctxxy)
        
    _wImGui_Viewport_GetSize(viewport)
        
    ImGui_SetNextWindowSize(ctxwh)
      
        
    ImGui_Begin(ctx"main"NoneImGui_WindowFlags_NoDecoration())

        
    ### START add ImGui widget from here.. ###
        
    if ImGui_Button(ctx"Play/Stop")[0]:
            
    RPR_Main_OnCommand(400440)
        
    ### STOP add ImGui widget from here.. ###

        
    ImGui_End(ctx)

        
    RPR_defer("loop()")

    RPR_defer("init()")
    [​IMG]

    :shalom::shalom::shalom:

     
    • Interesting Interesting x 1
    • Useful Useful x 1
    • List
  9. Futurewine

    Futurewine Audiosexual

    Joined:
    Oct 4, 2017
    Messages:
    888
    Likes Received:
    558
    Location:
    Sound City Labs
    get floating window by its title via script.. (lua example)
    originally posted by Edgemeal : https://forum.cockos.com/showpost.php?p=2365993&postcount=3

    PHP:
    -- Toggle video window full screen.lua
    local hwnd 
    reaper.BR_Win32_FindWindowEx("0""0""0""Video Window"falsetrue)
    if 
    hwnd then reaper.BR_Win32_SendMessage(hwnd0x20300end -- WM_LBUTTONDBLCLK 0x203
     
  10. Futurewine

    Futurewine Audiosexual

    Joined:
    Oct 4, 2017
    Messages:
    888
    Likes Received:
    558
    Location:
    Sound City Labs
    Best Answer
    Scripting templates/examples: How to get and manipulate TCP, Media Items, Project Markers (EEL2)
    originally posted by X-Raym : https://github.com/ReaTeam/ReaScripts-Templates/blob/master/Templates/X-Raym_Template.eel
    notes: more examples/templates including Lua and Python here: https://github.com/ReaTeam/ReaScripts-Templates/tree/master/Templates

    PHP:
    /**
     * ReaScript Name: Template Title (match file name without extension and author)
     * Description: A template script for REAPER ReaScript.
     * Instructions: Here is how to use it. (optional)
     * Author: X-Raym
     * Author URI: http://extremraym.com
     * Repository: GitHub > X-Raym > EEL Scripts for Cockos REAPER
     * Repository URI: https://github.com/X-Raym/REAPER-EEL-Scripts
     * File URI: https://github.com/X-Raym/REAPER-EEL-Scripts/scriptName.eel
     * Licence: GPL v3
     * Forum Thread: Script: Script name
     * Forum Thread URI: http://forum.cockos.com/***.html
     * REAPER: 4.76
     * Extensions: SWS/S&M 2.6.0 (optional)
     * Version: 1.3.2
    */
     
    /**
     * Changelog:
     * v1.3.2 (2015-03-14)
         # more infos for items loop
     * v1.3.1 (2015-02-20)
         # loops takes bug fix
     * v1.3 (2015-02-19)
        + Instructions header field
        + Get and Set parameters for items
        + Get and Set parameters for takes
     * v1.2.1 (2015-02-17)
        # loops indentation
     * v1.2 (2015-02-13)
        + Items, Takes, Tracks, Regions and FX loops
        # Underscore variables
     * v1.1 (2015-02-15)
        + Basic scripts actions template
     * v1.0 (2015-01-09)
        + Initial Release
        + New functions
        - Deleted functions
        # Updated functions
     */

    // ----- DEBUGGING ====>
    @import ../Functions/X-Raym_Functions console debug messages.eel

    debug 
    1// 0 => No console. 1 => Display console messages for debugging.
    clean 1// 0 => No console cleaning before every script execution. 1 => Console cleaning before every script execution.

    msg_clean();
    // <==== DEBUGGING -----

    function main() // local (i, j, item, take, track)
    (
        
    Undo_BeginBlock(); // Begining of the undo block. Leave it at the top of your main function.

        // YOUR CODE BELOW

        // LOOP THROUGH SELECTED ITEMS
        /*
        selected_items_count = CountSelectedMediaItems(0);
        
        i = 0; // INITIALIZE loop through selected items
        loop(selected_items_count, (item = GetSelectedMediaItem(0, i)) ? (
                // GET INFOS
                value_get = GetMediaItemInfo_Value(item, "D_VOL"); // Get the value of a the parameter
                B_MUTE : bool * to muted state
                B_LOOPSRC : bool * to loop source
                B_ALLTAKESPLAY : bool * to all takes play
                B_UISEL : bool * to ui selected
                C_BEATATTACHMODE : char * to one char of beat attached mode, -1=def, 0=time, 1=allbeats, 2=beatsosonly
                C_LOCK : char * to one char of lock flags (&1 is locked, currently)
                D_VOL : double * of item volume (volume bar)
                D_POSITION : double * of item position (seconds)
                D_LENGTH : double * of item length (seconds)
                D_SNAPOFFSET : double * of item snap offset (seconds)
                D_FADEINLEN : double * of item fade in length (manual, seconds)
                D_FADEOUTLEN : double * of item fade out length (manual, seconds)
                D_FADEINLEN_AUTO : double * of item autofade in length (seconds, -1 for no autofade set)
                D_FADEOUTLEN_AUTO : double * of item autofade out length (seconds, -1 for no autofade set)
                C_FADEINSHAPE : int * to fadein shape, 0=linear, ...
                C_FADEOUTSHAPE : int * to fadeout shape
                I_GROUPID : int * to group ID (0 = no group)
                I_LASTY : int * to last y position in track (readonly)
                I_LASTH : int * to last height in track (readonly)
                I_CUSTOMCOLOR : int * : custom color, windows standard color order (i.e. RGB(r,g,b)|0x100000). if you do not |0x100000, then it will not be used (though will store the color anyway)
                I_CURTAKE : int * to active take
                IP_ITEMNUMBER : int, item number within the track (read-only, returns the item number directly)
                F_FREEMODE_Y : float * to free mode y position (0..1)
                F_FREEMODE_H : float * to free mode height (0..1)
                
                // MODIFY INFOS
                value_set = value_get; // Prepare value output
                
                // SET INFOS
                SetMediaItemInfo_Value(item, "D_VOL", value_set); // Set the value to the parameter
            ); // ENDIF inside loop selected items
            i += 1; // INCREMENT loop through selected items
        ); // ENDLOOP through selected items
        */

        // LOOP THROUGH SELECTED TAKES
        /*
        selected_items_count = CountSelectedMediaItems(0);

        i = 0; // INITIALIZE loop through selected items
        loop(selected_items_count, (item = GetSelectedMediaItem(0, i)) ? (
                (take = GetActiveTake(item)) ? (
                    // GET INFOS
                    value_get = GetMediaItemTakeInfo_Value(take, "D_VOL"); // Get the value of a the parameter
                    // "D_VOL"
                    // "D_PAN"
                    // "D_PLAYRATE"
                    // "D_PITCH", Ge
                    // "I_CHANMODE"
                    // "D_STARTOFFS"
                    // "D_PANLAW"
                    // MODIFY INFOS
                    value_set = value_get; // Prepare value output
                    // SET INFOS
                    SetMediaItemTakeInfo_Value(take, "D_VOL", value_set); // Set the value to the parameter
                ); // ENDIF active take
            ); // ENDIF inside loop selected items
            i += 1; // INCREMENT loop through selected items
        ); // ENDLOOP through selected items
        */

        // LOOP TRHOUGH SELECTED TRACKS
        /*
        selected_tracks_count = CountSelectedTracks(0);

        i = 0; // INITIALIZE loop through selected tracks
        loop(selected_tracks_count, (track = GetSelectedTrack(0, i)) ? (
                // ACTIONS
            ); // ENDIF inside loop
            i += 1; // INCREMENT loop through selected tracks
        ); // ENDLOOP through selected tracks


        // LOOP THROUGH REGIONS
        /*
        i = 0; // INITIALIZE loop through regions

        while (EnumProjectMarkers(i, is_region, region_start, region_end, #name, region_id)) (   
            is_region === 1 ? (
                // ACTIONS   
            );
            i += 1; // INCREMENT loop through regions
        ); // ENDWHILE loop through regions
        */


        // LOOP TRHOUGH FX - by HeDa
        /*
        tracks_count = CountTracks(0);

        i=0; // INITIALIZE track loop
        loop (tracks_count, // loop for all tracks
                
            track = GetTrack(0, i);    // which track
            track_FX_count = TrackFX_GetCount(tracki); // count number of FX instances on the track
            
            i=0; // INITIALIZE FX loop
            loop (track_FX_count,    // loop for all FX instances on each track
                // ACTIONS
                i+=1; // INCREMENT FX loop                       
            ); // ENDLOOP FX loop
            
            i+=1; // INCREMENT tracks loop
        ); // ENDLOOP tracks loop
        */

        // YOUR CODE ABOVE

        
    Undo_EndBlock("My action"0); // End of the undo block. Leave it at the bottom of your main function.
    );

    msg_start(); // Display characters in the console to show you the begining of the script execution.

    main(); // Execute your main function

    UpdateArrange(); // Update the arrangement (often needed)

    msg_end(); // Display characters in the console to show you the end of the script execution.
     
  11. Futurewine

    Futurewine Audiosexual

    Joined:
    Oct 4, 2017
    Messages:
    888
    Likes Received:
    558
    Location:
    Sound City Labs
    haa i forgot things.. 1 year later this thread just saved my life.. awsome forum :shalom::shalom:
     
    • Winner Winner x 1
    • Love it! Love it! x 1
    • List
  12. Futurewine

    Futurewine Audiosexual

    Joined:
    Oct 4, 2017
    Messages:
    888
    Likes Received:
    558
    Location:
    Sound City Labs
    How to define an array of strings in eel?
    thanks to amagalma for question and Justin for answer, ref: https://forums.cockos.com/showthread.php?t=189265


    PHP:
    array = 10000// this is in EEL normal-memory, not string space -- need to make sure it doesn't collide with other memory your script uses

    mem_set_values(array, "dog""cat""mouse");
    ...
    gfx_drawstr(array[x]);
     
  13. Futurewine

    Futurewine Audiosexual

    Joined:
    Oct 4, 2017
    Messages:
    888
    Likes Received:
    558
    Location:
    Sound City Labs
    might save this formula here.. originally think-tank from mine just now.. :shalom:

    so the title is.. Get time by measure.. ? (something like that..)
    PHP:
        measure 25
        qn 
    = ((measure 4) - 4) - RPR_TimeMap_timeToQN(RPR_GetProjectTimeOffset(00))
        
    time RPR_TimeMap_QNToTime(qn)

        
    # example use case..
        
    RPR_SetEditCurPos(time00)
     
Loading...
Similar Threads - ReaScripts Notes references Forum Date
LF: Two Notes Genome Selling / Buying Yesterday at 3:38 PM
Anyone know of any good tools for setting up visual notes/prompts for presentation for Windows? Lounge Apr 20, 2024
Ableton halp, pleeze. I need to transpose MIDI clips (not notes) Live Apr 17, 2024
ai plugin for separation of notes Software Apr 6, 2024
Software to convert melody, mp3 or midi into notes Software Mar 28, 2024
Loading...