在MIDI编辑器窗口打开乐器界面窗口


  • 动漫爱好者 REAPER

    显示乐器界面非常实用,在MIDI编辑器窗口就可以直接打开关联的乐器界面,避免了经常要到Main窗口点开FX的尴尬,干活必备。
    复制下面这段代码到记事本, 另存为: Show or Hide Instrument.lua 到REAPER脚本文件夹下面(示例的C盘请换成自己的):
    C:\REAPER\Scripts

    _DBG=false
    function DBG(str)
      if _DBG then reaper.ShowConsoleMsg(str.."\n") end
    end
    
    -- a list of MIDI plugin manufacturers or just plugins that
    -- report as VSTi but aren't instruments. Add your own here.
    local blacklist = {
        "Insert Piz Here", "RapidComposer", "graywolf2004", "Kirnu"
     }
    
    
    local function isFXonBlacklist(name)
      for i = 1, #blacklist do
        if name:match(blacklist[i]) then return true end
      end
      return false
    end
    
    
    local function getInstrumentIdx(track)
      -- iterate through FX, checking if instruments are
      -- actual instruments and not on blacklist
      local num_fx = reaper.TrackFX_GetCount(track)
      local idx = -1
      for i = num_fx,1,-1 do 
        local ok, name = reaper.TrackFX_GetFXName(track, i-1,"")
        if name:match("VSTi") == "VSTi" and not isFXonBlacklist(name) then idx = i-1 break end
      end
      
      return idx
    end
    
    
    local function showHideFX(track,fx_idx)
      -- showflag=0 for hidechain, =1 for show chain(index valid), =2 for hide floating window(index valid), 
      -- =3 for show floating window (index valid)
      local flag=reaper.TrackFX_GetFloatingWindow(track, fx_idx)==nil and 3 or 2
      reaper.TrackFX_Show(track,fx_idx,flag)
    end
    
    
    local function checkReceives(track)
      local num_receives=reaper.GetTrackNumSends(track,-1)
      if num_receives > 0 then
        local ot=reaper.BR_GetMediaTrackSendInfo_Track(track, -1 , 0, 0)
        showHideFX(ot,getInstrumentIdx(ot))
        return true
      end
      return false            
    end
    
    
    function openInstrument()
      local sts=reaper.CountSelectedTracks(0)
      if sts==1 then
        local tr=reaper.GetSelectedTrack(0,0)
        if tr~=nil then      
          local fx=getInstrumentIdx(tr)
          if fx>-1 then
            showHideFX(tr,fx)
            return
          else
            if reaper.GetTrackNumSends(tr,0)>0 then
              local ok, str=reaper.GetTrackSendName(tr, 0, "")
              -- 0s = idx, idx, tracktype
              local st=reaper.BR_GetMediaTrackSendInfo_Track(tr,0 , 0, 1)
              local bus=reaper.BR_GetSetTrackSendInfo(tr, 0, 0, "I_MIDI_DSTBUS", false, 0)
              if bus==-1 then --check if it's an output track
                checkReceives(tr)
              end
              local fx=getInstrumentIdx(st)
              showHideFX(st,fx)
              return
            else
              checkReceives(tr)
            end
          end
        end
      end
    end
    
    openInstrument()
    

    动作列表section部分选择MIDI Editor,在ReaScript位置导入这个脚本

    1582a3b2-bbb9-4a2d-870f-f31b4191e837-image.png

    设定一个快捷键,比如: F9,便可随时显示或隐藏乐器界面。


    在MIDI编辑器的工具栏做一个按钮,方便随时切换显示乐器界面:

    在工具栏上右键,选择Customize toolbar
    c9542838-24ff-44cf-8aed-0b49a70c48c3-image.png

    在左下角添加动作,找到Show or Hide Instrument.lua
    a8b766a5-5b61-4011-a610-42d6ba7e0a69-image.png

    点击 Text icon 设定文本图标(要用图片就选择Change icon)
    4d146179-7c07-48fb-867a-ce91d4f243b5-image.png

    完成!
    598352ec-f098-4b9b-b5e0-f688911db0d8-image.png

    以上,已发布到:
    https://www.soundengine.cn/topic/32/定制cubase习惯的reaper发布贴



  • 也可以直接pass through出去调用main的track fx面板(小声bb)👂


  • 动漫爱好者 REAPER

    @aadsache在MIDI编辑器窗口打开乐器界面窗口 中说:

    也可以直接pass through出去调用main的track fx面板(小声bb)👂

    我刚开始也是这么做的,不过马上发现一个问题,FX面板只能在当前轨道才能调出来。如果一个音源的16个通道都用上的话,那么16个通道的FX面板是空的,按这种方式就失效了。而上面的脚本可以调出当前轨道对应的音源,只要你的通道跟音源连上,一定会被调出来。



  • @リーパー 龙舌兰(大神BB)


  • REAPER

    这太赞了,解决了大麻烦!



  • 感谢版主。不过有个小问题不知道能否解决,就是钢琴卷帘全屏时,点击编辑时乐器窗还是会隐藏


  • 动漫爱好者 REAPER

    @ZMS在MIDI编辑器窗口打开乐器界面窗口 中说:

    感谢版主。不过有个小问题不知道能否解决,就是钢琴卷帘全屏时,点击编辑时乐器窗还是会隐藏

    VSTi.png

    右上角的置顶按钮点下去



  • @怪力乱神 我瓜了!我错了!


  • 动漫爱好者 REAPER

    @futurewy 多谢,你说得是哪个全局命令?



  • @怪力乱神 我错了错了!之前没有好好看回帖,现在看了才发现全局命令只能打开单通道的。多通道那种不行。



  • @怪力乱神 话说今天搜索来到了这里,真是好地方啊!辛苦你整理这些资料了!



  • 另外,有没有办法在轨道上就直接能选择发送的通道呢?不想一次性创建16个通道,也觉得点进轨道路由设置再设置通道号很繁琐,所以现在基本上已经把所有的多通道音源到单通道音源用了。而且轨道上不能显示通道号,都不知道用到第几个通道了,每次要增加一轨还要打开音源先看看,好麻烦。

    不知道在轨道上快捷的显示并设置通道号是否可以实现呢?


  • 动漫爱好者 REAPER

    @futurewy 没有研究过这个地方,要实现应该可以。
    轨道上的路由按钮可以设置快捷键,弹窗显示也很方便查看通道。除了一键创建16轨,也可以自己建立轨道设置路由。



  • @怪力乱神在MIDI编辑器窗口打开乐器界面窗口 中说:

    @futurewy 没有研究过这个地方,要实现应该可以。
    轨道上的路由按钮可以设置快捷键,弹窗显示也很方便查看通道。除了一键创建16轨,也可以自己建立轨道设置路由。

    我感觉在轨道上显示通道号不容易吧,毕竟要对ui进行修改了。



建议的主题

  • 107
  • 1
  • 2