--[[
* Category: Various
* Description: Insert FX by name to master track or selected tracks or selected items
* Author: Yaunick
* Contact: b.yanushevich@gmail.com
* Donation: https://paypal.me/yaunick?locale.x=ru_RU
--]]
  ------------Set FX name:----------
  name = 'ReaEQ (Cockos)'
  ----------------------------------
 
  reaper.Undo_BeginBlock()
  reaper.PreventUIRefresh(1)
 
    cursor = reaper.GetCursorContext2(true)
    master = reaper.GetMasterTrack(0)
   
    if cursor == 0 and reaper.IsTrackSelected(master) == true then
      local count_bef_master = reaper.TrackFX_GetCount(master)
      reaper.TrackFX_AddByName(master, name, false, -1)
      local count_aft_master = reaper.TrackFX_GetCount(master)
      if count_bef_master < count_aft_master and reaper.TrackFX_GetOffline(master, count_aft_master-1) == false then
        reaper.TrackFX_Show(master, count_aft_master-1, 3)
      end
    end
    if cursor == 0 then
      if reaper.CountSelectedTracks(0) > 0 then
        for i=0, reaper.CountSelectedTracks(0)-1 do
          local track = reaper.GetSelectedTrack(0,i)
          local count_bef_track = reaper.TrackFX_GetCount(track)
          reaper.TrackFX_AddByName( track, name, false, -1)
          local count_aft_track = reaper.TrackFX_GetCount(track)
          if count_bef_track < count_aft_track
          and reaper.CountSelectedTracks(0) == 1
          and reaper.TrackFX_GetOffline(track, count_aft_track-1) == false
          then
            reaper.TrackFX_Show(track, count_aft_track-1, 3)
          end
        end
      end
    elseif cursor == 1 then
      if reaper.CountSelectedMediaItems(0) > 0 then
        for i=0, reaper.CountSelectedMediaItems(0)-1 do
          local item = reaper.GetSelectedMediaItem(0,i)
          local take = reaper.GetActiveTake(item)
          local count_bef_take = reaper.TakeFX_GetCount(take)
          reaper.TakeFX_AddByName( take, name, -1)
          local count_aft_take = reaper.TakeFX_GetCount(take)
          if count_bef_take < count_aft_take
          and reaper.CountSelectedMediaItems(0) == 1
          and reaper.TakeFX_GetOffline(take, count_aft_take-1) == false then
            reaper.TakeFX_Show(take, count_aft_take-1, 3)
          end
        end
      end
    end
       
  reaper.Undo_EndBlock('Insert FX by name to selected tracks or items', -1)
  reaper.PreventUIRefresh(-1)