Помогите создать экшн / кастом экшн / скрипт

  • Автор темы Автор темы @Michael
  • Дата начала Дата начала
Подскажите, как убрать окно ввода?
-------------------
function main()
local ret0, ex_name = GetSetProjectInfo_String(0, 'RENDER_PATTERN', '', false)
local ret, name = GetUserInputs('Render file name', 1,'new name (contain wildcards),extrawidth=200', ex_name)
if ret then
GetSetProjectInfo_String(0, 'RENDER_PATTERN', name, true)
end
end
---------------------------------------------------------------------
Script: mpl_Set render filename.lua

GetUserInputs - это то самое текстовое поле, которое отдаёт пару параметров, среди которых текстовый параметр name.

Вот так, примерно, должно работать. Но код не полный, не могу протестировать на ошибки.
Код:
function main()
    local ret0, ex_name = GetSetProjectInfo_String(0, 'RENDER_PATTERN', '', false)
    local ret, name = 1, 'Name'
    if ret then
    GetSetProjectInfo_String(0, 'RENDER_PATTERN', name, true)
    end
    end
 
  • Like
Реакции: shuco
@Kokarev Maxim,Максим, подскажи пожалуйста, как сделать что бы перед NAME из скрипта стояло префиксом имя файла который я рендерю?

function main()
local ret0, ex_name = GetSetProjectInfo_String(0, 'RENDER_PATTERN', '', false)
local ret, name = 1, 'Name'
if ret then
GetSetProjectInfo_String(0, 'RENDER_PATTERN', name, true)
end
end
 
Последнее редактирование:
И ещё))) возможно чтобы директория sess по умолчанию помещалась в директорию с названием проекта?

function GetDesktopPath() --https://forums.coronalabs.com/topic/59382-system-directories-on-windows-builds/
if GetOS():lower():match('win') then
local desktopPath = os.getenv("appdata")
local appDataStart = string.find( desktopPath, "AppData" )
if( appDataStart ) then
desktopPath = string.sub( desktopPath, 1, appDataStart-1 )
desktopPath = desktopPath .. "Desktop\\sess"
end
return true, desktopPath
end

if GetOS():lower():match('mac') then
local desktopPath = os.getenv("HOME")..'/Desktop'
return true, desktopPath
end

end
-------------------
function main()
local ret, desktopPath = GetDesktopPath()
if ret then reaper.GetSetProjectInfo_String(0, 'RENDER_FILE', desktopPath, true) end
end
---------------------------------------------------------------------
function CheckFunctions(str_func) local SEfunc_path = reaper.GetResourcePath()..'/Scripts/MPL Scripts/Functions/mpl_Various_functions.lua' local f = io.open(SEfunc_path, 'r') if f then f:close() dofile(SEfunc_path) if not _G[str_func] then reaper.MB('Update '..SEfunc_path:gsub('%\\', '/')..' to newer version', '', 0) else return true end else reaper.MB(SEfunc_path:gsub('%\\', '/')..' missing', '', 0) end end
--------------------------------------------------------------------
local ret, ret2 = CheckFunctions('VF_CheckReaperVrs')
if ret then ret2 = VF_CheckReaperVrs(5.973) end
if ret and ret2 then main() end
 
Последнее редактирование:
Всем привет. Подскажите пожалуйста - можно ли как то в скрипте проверять меняется ли выделение аудио или миди айтемов?
То есть надо чтобы бы скрипт постоянно проверял изменяется ли выделение и если да - то записывал допустим в какую нибудь переменную число 1 и сразу сбрасывалось значение на 0 например.
 
Последнее редактирование:
@nounaim, отдельного лисенера для этого нет. Поэтому просто проверяем состояние интересующих itemов, и сохраняем его куда-нибудь.

Мне, допустим, был интересен последний выделенный item, я просто клал каждую итерацию первый выделенный item в переменную.
 

Вложения

  • Снимок экрана 2024-07-19 в 19.29.04.png
    Снимок экрана 2024-07-19 в 19.29.04.png
    125,4 KB · Просмотры: 41
Все привет!

Появилась идея, помогите реализовать.

Часто, необходимо бекапнуть в проекте какую-нибудь дорожку (например вокальную партию до тюнинга или нарезки)
Для этого я обычно создаю копию дорожки, мьютирую ее, делаю байпас FX и скрываю из TCP и MCP.

И все бы ничего и можно было бы с помощью комбинации имеющихся экшнов это сделать, но хочется больше автоматики.

Вижу такой алгоритм:

1. создается дубликат выбранного трека
2. имя дубликата трека изменятся с [имя_трека] на [имя_трека_original_*дата_время*]
3. дубликат трека мьютируется
4. FX на дубликате трека байпасится
5. создается папка "originals"
6. папка "originals" поднимается наверх и становится первым треком
7. папка "originals" скрывается из MCP и TCP
8. если папка "originals" уже есть в проекте, то пункты 5, 6 и 7 не выполняются
9. дубликат трека помещается внутрь папки "originals"
10. дубликат трека так же скрывается из TCP и MCP

Итого, одним хоткеем мы сейвим оригиналы треков, которые лежат все в одном месте и можем в любой момент времени вернуться к ним.
 
  • Like
Реакции: Kokarev Maxim и PianoIst
1. создается дубликат выбранного трека
2. имя дубликата трека изменятся с [имя_трека] на [имя_трека_original_*дата_время*]
3. дубликат трека мьютируется
4. FX на дубликате трека байпасится
5. создается папка "originals"
6. папка "originals" поднимается наверх и становится первым треком
7. папка "originals" скрывается из MCP и TCP
8. если папка "originals" уже есть в проекте, то пункты 5, 6 и 7 не выполняются
9. дубликат трека помещается внутрь папки "originals"
10. дубликат трека так же скрывается из TCP и MCP
Я бы внёс модификацию по пункту 3: не мьютировать трек, а мьютировать все айтемы на нём. Так, глобальное выполнение un-mute не будет влиять на архивные треки, они не будут звучать в любом случае.
 
Все привет!

Появилась идея, помогите реализовать.

Часто, необходимо бекапнуть в проекте какую-нибудь дорожку (например вокальную партию до тюнинга или нарезки)
Для этого я обычно создаю копию дорожки, мьютирую ее, делаю байпас FX и скрываю из TCP и MCP.

И все бы ничего и можно было бы с помощью комбинации имеющихся экшнов это сделать, но хочется больше автоматики.

Вижу такой алгоритм:

1. создается дубликат выбранного трека
2. имя дубликата трека изменятся с [имя_трека] на [имя_трека_original_*дата_время*]
3. дубликат трека мьютируется
4. FX на дубликате трека байпасится
5. создается папка "originals"
6. папка "originals" поднимается наверх и становится первым треком
7. папка "originals" скрывается из MCP и TCP
8. если папка "originals" уже есть в проекте, то пункты 5, 6 и 7 не выполняются
9. дубликат трека помещается внутрь папки "originals"
10. дубликат трека так же скрывается из TCP и MCP

Итого, одним хоткеем мы сейвим оригиналы треков, которые лежат все в одном месте и можем в любой момент времени вернуться к ним.
Практически мой алгоритм последовательных действий за исключением пункта 4
4. FX на дубликате трека байпасится
Вместо нег использую - Lock Track Control
третий пункт мутирования трека уже отключает выполнение эфыксов в чейне, поэтому дополнительное отключение не требуется. В принципе, на дубликате у меня нет FX. Это контейнер для тэйков, поэтому ему FX вообще не нужны. А LockTrackControl спасет от
глобальное выполнение un-mute
2-ого пункта у меня нет. Идея хорошая.
 
Здравствуйте! Был бы признателен за скрипт, позволяющий дискретно крутить громкость (панораму) трека. Например, удерживаешь shift, и крутилка при вращении "клацает" с шагом 0,5 дБ.
 
Подскажите пожалуйста -какой командой можно вставить точку автоматизации на айтем автоматизации.
Есть такой скриптик, но почему точка ставиться как бы не на айтем а "под него"
если отодвинуть айтем то точка есть

env=reaper.GetSelectedEnvelope(0)
_, value, _, _, _ = reaper.Envelope_Evaluate( env,0, 0, 0 )
reaper.InsertEnvelopePoint( env, 1.91, value, 0, 0, 0, 0 )
 
reaper.InsertEnvelopePointEx( env,0 , 0.91, 0.5, 0, 0, 0,0 )
Подскажите пожалуйста -какой командой можно вставить точку автоматизации на айтем автоматизации.
Есть такой скриптик, но почему точка ставиться как бы не на айтем а "под него"
если отодвинуть айтем то точка есть

env=reaper.GetSelectedEnvelope(0)
_, value, _, _, _ = reaper.Envelope_Evaluate( env,0, 0, 0 )
reaper.InsertEnvelopePoint( env, 1.91, value, 0, 0, 0, 0 )

reaper.InsertEnvelopePointEx это делает
 
Подскажите пожалуйста -какой командой можно вставить точку автоматизации на айтем автоматизации.
Есть такой скриптик, но почему точка ставиться как бы не на айтем а "под него"
если отодвинуть айтем то точка есть

env=reaper.GetSelectedEnvelope(0)
_, value, _, _, _ = reaper.Envelope_Evaluate( env,0, 0, 0 )
reaper.InsertEnvelopePoint( env, 1.91, value, 0, 0, 0, 0 )

Да, Ex это делает. И пересчитать все айтемы автоматизации:

Код:
env=reaper.GetSelectedEnvelope(0)
local count_ai = reaper.CountAutomationItems( env )
  for i = 0, count_ai - 1 do
      _, value, _, _, _ = reaper.Envelope_Evaluate( env,0, 0, 0 )
      reaper.InsertEnvelopePointEx( env, i, 1.91, value, 0, 0, 0, 0 )
  end
 
  • Like
Реакции: nounaim
День добрый, у MPL есть скрипты которые закидывают аудио слайсы в отдельные семплеры(reasamplomatic), но на один трек, может кто-то может переделать один из скриптов, что бы каждый слайс имел свой семплер и каждый сэмплер закидывался на отдельный/новый трек, с созданием пустого айтема на каждом треке. Если такое уже есть, ткните носом, пжлст.
Настройки сэмплера
 

Вложения

  • 12345.png
    12345.png
    28,6 KB · Просмотры: 34
День добрый, у MPL есть скрипты которые закидывают аудио слайсы в отдельные семплеры(reasamplomatic), но на один трек, может кто-то может переделать один из скриптов, что бы каждый слайс имел свой семплер и каждый сэмплер закидывался на отдельный/новый трек, с созданием пустого айтема на каждом треке. Если такое уже есть, ткните носом, пжлст.
Настройки сэмплера
mpl_Explode selected track RS5k instances to new tracks.lua, правда без пустых айтемов
 
  • Like
Реакции: shikashi
Приветствую!
Не нашел скрипта, который бы инкрементировал огибающую панорамы трека. Для огибающей громкости, к примеру, есть SWS/BR: Increase selected envelope points by 0.5 db (volume envelope only).
А вот чтоб панораму на 5-10 % влево-вправо...
 
За плечами только Г. Шилдт, прошу не судить строго. )
Где почитать про Риперовские типы данных?
Например, функция reaper.SetEnvelopePoint.
Код:
boolean reaper.SetEnvelopePoint(TrackEnvelope envelope, integer ptidx,
optional number timeIn, optional number valueIn, optional integer shapeIn,
optional number tensionIn, optional boolean selectedIn,
optional boolean noSortIn)
Boolean, integer стандартные типы, это понятно. А вот TrackEnvelope? Какое значение он принимает: текстовое, численное? Какой формат, двоичный, десятичный?
 
@variator,==> ApiFunctionList
**********************
Upd: Gets a built-in track envelope by configuration chunk name, like "<VOLENV", or GUID string, like "{B577250D-146F-B544-9B34-F24FBE488F1F}".
**********************
 
Последнее редактирование:
  • Like
Реакции: variator
Вопрос по функции ввода.
Lua: boolean retval, string retvals_csv = reaper.GetUserInputs(string title, integer num_inputs, string captions_csv, string retvals_csv)
Для чего нужен boolean retval?
Пытался вывести его значение с помощью reaper.ShowConsoleMsg(retval), но пишет: bad argument #1 to 'ShowConsoleMsg' (string expected, got boolean)
 
Что такое retval не знаю - ни разу не приходилось использовать. Но по ошибкам всё просто: boolean это значит, что отдаёт только значения true или false. И, собственно (string expected, got boolean) говорит о том, что ожидает строку, а получает булеан. Лечится простым конвертированием значения в строковый параметр:
Код:
reaper.ShowConsoleMsg(tostring(retval))
 
  • Like
Реакции: variator
Вопрос по функции ввода.
Lua: boolean retval, string retvals_csv = reaper.GetUserInputs(string title, integer num_inputs, string captions_csv, string retvals_csv)
Для чего нужен boolean retval?
Пытался вывести его значение с помощью reaper.ShowConsoleMsg(retval), но пишет: bad argument #1 to 'ShowConsoleMsg' (string expected, got boolean)
Я как понимаю, этот retval выдаст false если пользователь закроет окно, не введя значения, или при иных нештатных для функции ситуациях. Когда всё нормально, выдаст true.
Таким образом с помощью этой переменной можно предотвратить ошибки при нештатных ситуациях и просто прервать скрипт.. или вызвать окошко с каким нибудь предупреждением
 
  • Like
Реакции: variator и Kokarev Maxim
Как быстро сделать одинаковыми уровни каналов по громкости ?
 

Вложения

  • Скрин.png
    Скрин.png
    52,7 KB · Просмотры: 19
Как быстро сделать одинаковыми уровни каналов по громкости ?
Каналов или тейков ? если тейков то Item properties: Normalize items together (common gain) to +0dB peak
если треков Script: spk77_Reset all tracks volume.eel или. Script: Archie_Track; Volume reset on all tracks (0 db).lua
 
Каналов или тейков ? если тейков то Item properties: Normalize items together (common gain) to +0dB peak
если треков Script: spk77_Reset all tracks volume.eel или. Script: Archie_Track; Volume reset on all tracks (0 db).lua
Каланов имеется ввиду, левый-правый, чтобы они звучали на одинаковой громкости. Интересует работа с items, скрин прикреплён. Normalize items together меняет громкость левого и правого.
 

Сейчас просматривают