poulhoi

phoi_Start recording or render new recording as mp3.lua

Feb 24th, 2021 (edited)
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.28 KB | None | 0 0
  1. --- USER CONFIG
  2. local filename = "footswitch_render"
  3.  
  4. --- END USER CONFIG
  5.  
  6.   function enc(data)  -- http://lua-users.org/wiki/BaseSixtyFour
  7.     local b='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
  8.       return ((data:gsub('.', function(x)
  9.           local r,b='',x:byte()
  10.           for i=8,1,-1 do r=r..(b%2^i-b%2^(i-1)>0 and '1' or '0') end
  11.           return r;
  12.       end)..'0000'):gsub('%d%d%d?%d?%d?%d?', function(x)
  13.           if (#x < 6) then return '' end
  14.           local c=0
  15.           for i=1,6 do c=c+(x:sub(i,i)=='1' and 2^(6-i) or 0) end
  16.           return b:sub(c+1,c+1)
  17.       end)..({ '', '==', '=' })[#data%3+1])
  18.   end
  19.  
  20.   function setFormatMP3()
  21.     local form_conf = { [1]=128,
  22.                         [2]=0,
  23.                         [5]=232,
  24.                         [6]=3,
  25.                         [9]=2,
  26.                         [13]=255,
  27.                         [14]=255,
  28.                         [15]=255,
  29.                         [16]=255,
  30.                         [17]=4,
  31.                         [21]=128,
  32.                         len = 28}
  33.    
  34.      out_str = ''
  35.     for i = 1, form_conf.len do
  36.       if not form_conf[i] then form_conf[i] = 0 end
  37.       out_str = out_str..tostring(form_conf[i]):char()
  38.     end
  39.     reaper.GetSetProjectInfo_String(0, 'RENDER_FORMAT', enc('l3pm'..out_str), true)
  40.   end
  41.  
  42.   function setRenderBoundsTime()
  43.     reaper.GetSetProjectInfo(0, 'RENDER_BOUNDSFLAG', 2, true)
  44.   end
  45.  
  46.   function setRenderPattern(name)
  47.     local pr_path = reaper.GetProjectPathEx( 0, '' )
  48.     reaper.GetSetProjectInfo_String(0, 'RENDER_FILE', pr_path, true)
  49.     reaper.GetSetProjectInfo_String(0, 'RENDER_PATTERN', name, true)
  50.   end
  51.  
  52.   function setRenderSourceMaster()
  53.     reaper.GetSetProjectInfo(0, 'RENDER_SETTINGS', 0, true) -- set to master
  54.   end
  55.  
  56. function main()
  57.   local playstate = reaper.GetPlayStateEx( 0 )
  58.   if (playstate >> 2) == 1 then -- if currently recording
  59.     reaper.Main_OnCommand(1016, 0) -- stop
  60.     reaper.Main_OnCommand(40290, 0) -- time selection from items
  61.     setRenderSourceMaster()
  62.     setFormatMP3()
  63.     setRenderBoundsTime()
  64.     setRenderPattern(filename)
  65.     reaper.Main_OnCommand(42230, 0) -- render using current settings
  66.   else
  67.     reaper.Main_OnCommand(1013, 0) -- record
  68.   end
  69. end
  70.  
  71. main()
  72.  
Add Comment
Please, Sign In to add comment