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

  • Автор темы Автор темы @Michael
  • Дата начала Дата начала
Там ничего не надо делать. Просто установить в ресэмплинге 10.
Вот так:

Код:
local ResampleMode = 10
                    -- = 0  Medium (64pt Sinc)
                    -- = 1  Low (Linear Interpolation)
                    -- = 2  Lowest (Point Sampling)
                    -- = 3  Good (192pt Sinc)
                    -- = 4  Better (384pt Sinc)
                    -- = 5  Fast (IIR + Linear Interpolation)
                    -- = 6  Fast (lliRx2 + Linear Interpolation)
                    -- = 7  Fast (16pt Sinc)
                    -- = 8  HQ (512pt Sinc)
                    -- = 9  Extreme HQ (768pt HQ Sinc)
                    -- = 10 r8brain free (hignest quality, fast)
Спасибо большое!
 
  • Like
Реакции: Mr_Tsonts
@Дима Горелик, можете проверить. Откройте окно рендера и запустите скрипт, увидите как в окне рендера изменится запись во вкладке ресэмплинга.
 
Всех приветствую. Вопрос такой: как выбрать в скрипте lua нужную огибающую
либо сохранить- восстановить выделенную, чтобы к ней вернуться?
Вот reaper.GetSelectedTrackEnvelope есть, чтобы получить, а Set как сделать?
Нужно для доработки одного скрипта, который я сам написал, несмотря на то, что полный нуб в программировании.
Скрипт ставит зависимые (in pool) айтемы автоматизации по стретч маркерам выделенного медиа айтема. Образец загружается. Причём айтемы автоматизации можно ставить на любую выделенную огибающую любой дорожки. Для расстановки же стретч маркеров по транзиентам использую MK-slicer от Максим Кокарева.
Мой же скрипт, хоть и написан по-нубски, уже хорошо работает, но хотелось бы исключить возможную ошибочную ситуацию, связанную с возможным неправильным содержимым буфера обмена (промежуточные операции копирования) в случае отказа от загрузки образца айтема автоматизации.
 
Помогите, пожалуйста...

Задача простая (с точки зрения конечной цели, а какова в реализации -- хз), однако, как оказалось (судя по результатам поисков в интернете), своеобразная.


ЧТО НУЖНО:

Посылать MIDI-контроллеры (скажем, CC / Program Change) с компьютерной клавиатуры.


Несколько продвинулся, был на форуме Рипера, ещё помог человек, но удовлетворительного результата не удалось достичь.


Что имеется на данный момент:

lua скрипт:
MIDI_channel = 1
CC = 9
CC_value = 127
reaper.StuffMIDIMessage(0, -- external device 2; 16 is external device 0, 17 is external device 1, etc.
0xB0 + (MIDI_channel - 1), -- this will send a CC message to the selected MIDI channel
CC,
CC_value
)

Однако проблема в том, что данный скрипт посылает только одно значение (value).

Хотелось бы, чтобы, если, например, зажал клавишу "↑" или "e", то значения CC шли вверх, а если зажал клавишу "↓" или "d", то значения CC шли вниз.

Полагаю, может потребоваться какая-то "память" (что усложняет задачу скриптописания, так что прошу прощения за беспокойство), но, возможно, уже имеются какие-то типовые решения подобных задач.
 
Последнее редактирование:
Помогите, пожалуйста...

Задача простая (с точки зрения конечной цели, а какова в реализации -- хз), однако, как оказалось (судя по результатам поисков в интернете), своеобразная.


ЧТО НУЖНО:

Посылать MIDI-контроллеры (скажем, CC / Program Change) с компьютерной клавиатуры.


Несколько продвинулся, был на форуме Рипера, ещё помог человек, но удовлетворительного результата не удалось достичь.


Что имеется на данный момент:

lua скрипт:
MIDI_channel = 1
CC = 9
CC_value = 127
reaper.StuffMIDIMessage(0, -- external device 2; 16 is external device 0, 17 is external device 1, etc.
0xB0 + (MIDI_channel - 1), -- this will send a CC message to the selected MIDI channel
CC,
CC_value
)

Однако проблема в том, что данный скрипт посылает только одно значение (value).

Хотелось бы, чтобы, если, например, зажал клавишу "↑" или "e", то значения CC шли вверх, а если зажал клавишу "↓" или "d", то значения CC шли вниз.

Полагаю, может потребоваться какая-то "память" (что усложняет задачу скриптописания, так что прошу прощения за беспокойство), но, возможно, уже имеются какие-то типовые решения подобных задач.
один скрипт на плюс, другой на минус
 
@Michael,

Я искал среди потенциально подобных скриптов (типа "Increase CC (bundle)", "Decrease CC (bundle)", "sr_Increase events in CC lane under mouse cursor"), но не понял, как сделать increase/decrease value в сочетании с reaper.StuffMIDIMessage, ибо там совсем огромные участки кода (во всяком случае на не кодерский взгляд).

Например, скрипт

function CheckForSelectedEvents(cc_lane) -- check if cc_lane has selected events

stringPos = 1 -- position in MIDIstring while parsing through events
local selected_events = 0

while stringPos < MIDIlen-12 do -- parse through all events in the MIDI string, one-by-one, excluding the final 12 bytes, which provides REAPER's All-notes-off end-of-take message
offset, flags, msg, stringPos = string.unpack("i4Bs4", MIDIstring, stringPos) -- unpack MIDI-string on stringPos

if #msg == 3 -- if msg consists of 3 bytes (= channel message)
and (msg:byte(1)>>4) == 11 and msg:byte(2) == cc_lane -- if status byte is a CC, CC# equals cc_lane
and (flags&1 == 1) -- and event is selected
then
selected_events = 1
return selected_events -- at least one selection was found
end
end
end


function IncreaseCC(take, cc_lane, selected_events, increase)

stringPos = 1 -- position in MIDIstring while parsing through events
tableEvents = {} -- initialize table, MIDI events will temporarily be stored in this table until they are concatenated into a string again

while stringPos < MIDIlen-12 do -- parse through all events in the MIDI string, one-by-one, excluding the final 12 bytes, which provides REAPER's All-notes-off end-of-take message
offset, flags, msg, stringPos = string.unpack("i4Bs4", MIDIstring, stringPos) -- unpack MIDI-string on stringPos

if #msg == 3 -- if msg consists of 3 bytes (= channel message)
and (msg:byte(1)>>4) == 11 and msg:byte(2) == cc_lane -- if status byte is a CC, CC# equals cc_lane
and (flags&1 == 1 or not selected_events) -- and event or muted event is selected
then
msg_b3 = msg:byte(3) -- get CC value
msg = msg:sub(1,1) .. msg:sub(2,2) .. string.char(math.min(127, (math.ceil(msg_b3*increase)))) -- increase CC value, convert CC value to string, concatenate msg
end
table.insert(tableEvents, string.pack("i4Bs4", offset, flags, msg)) -- re-pack MIDI string and write to table
end
reaper.MIDI_SetAllEvts(take, table.concat(tableEvents) .. MIDIstring:sub(-12))
reaper.MIDI_Sort(take)
end


local cc_lane -- CC lane under mouse
local increase = 1.1 -- value to increase the CC event
_, _, _ = reaper.BR_GetMouseCursorContext() -- initiate "get mouse cursor context"
_, _, _, cc_lane, _, _ = reaper.BR_GetMouseCursorContext_MIDI() -- get CC lane
local take = reaper.MIDIEditor_GetTake(reaper.MIDIEditor_GetActive()) -- get active take in MIDI editor


if reaper.TakeIsMIDI(take) then -- make sure, that take is MIDI
gotAllOK, MIDIstring = reaper.MIDI_GetAllEvts(take, "") -- write MIDI events to MIDIstring, get all events okay
if not gotAllOK then reaper.ShowMessageBox("Error while loading MIDI", "Error", 0) return(false) end -- if getting the MIDI data failed

MIDIlen = #MIDIstring -- get string length
local selected_events = CheckForSelectedEvents(cc_lane) -- check for selected events
IncreaseCC(take, cc_lane, selected_events, increase) -- increase CC events
end

reaper.UpdateArrange()
reaper.Undo_OnStateChange2(proj, "Increase events in CC"..cc_lane.." lane under mouse cursor")

Как бы его соединить с

MIDI_channel = 1
CC = 9
CC_value = 127
reaper.StuffMIDIMessage(0, -- external device 2; 16 is external device 0, 17 is external device 1, etc.
0xB0 + (MIDI_channel - 1), -- this will send a CC message to the selected MIDI channel
CC,
CC_value
)

?

Или есть более простой "counter" +1?

Прошу прощения за беспокойство, знаю, что вы занятый программист, но, возможно, вы или кто-то иной здесь поможет(е).
 
Здравствуйте! Как известно, при зажатых ctrl+shift мы можем тянуть огибающую, находящуюся в области выделения. Часто вручную приходится увеличивать "вход" и "выход" огибающей.
Хотелось бы скрипт, позволяющий делать это с помощью колесика мыши (или с клавиатуры).
215407
 
Доброго времени суток! Я правильно понимаю, что для создания действия, которого нет в списке действий нужно писать скрипт?

Возникла необходимость перейти к маркеру 31, а в списке действий их всего 30. Также нужно управлять громкостью трека 100, а их в списке только 99
 
Запускаю плагин экшеном, что то редактирую, потом запускаю другой плагин экшеном, но окно плагина не открывается (гифку прикрепил).
Подскажите, что добавить в кастом, чтобы окно вновь запущенного плагина открывалось? Есть вариант Create shortcut, но в (actions) его нет, и собрать цепочку действий не получится. Вот используемый экшн для запуска vst.
Custom:
SWS/S&M: Resources - Paste FX chain to selected tracks, slot
SWS/S&M: Show FX chain for selected tracks (selected FX)
SWS/S&M: Select last FX for selected tracks
 

Вложения

  • Gif.gif
    Gif.gif
    580,3 KB · Просмотры: 109
Запускаю плагин экшеном, что то редактирую, потом запускаю другой плагин экшеном, но окно плагина не открывается (гифку прикрепил).
Подскажите, что добавить в кастом, чтобы окно вновь запущенного плагина открывалось? Есть вариант Create shortcut, но в (actions) его нет, и собрать цепочку действий не получится. Вот используемый экшн для запуска vst.
Custom:
SWS/S&M: Resources - Paste FX chain to selected tracks, slot
SWS/S&M: Show FX chain for selected tracks (selected FX)
SWS/S&M: Select last FX for selected tracks

Ой ой беда. Давно же придумали FX shortcut
 
Можно ли создать (или может уже есть) экшн, который будет выделять ноты в миди редакторе через одну? какими командами можно это реализовать? 2, 4, 8, 16 неважно сколько нот в такте, чтобы после применения команды именно каждая вторая была выделена.
 
Можно ли создать (или может уже есть) экшн, который будет выделять ноты в миди редакторе через одну? какими командами можно это реализовать? 2, 4, 8, 16 неважно сколько нот в такте, чтобы после применения команды именно каждая вторая была выделена.
MIDI Selector.gif
 
  • Like
Реакции: BRG
Ребята. Есть такой у меня скрипт. Его функция активация айтема внутри миди редактора по лкм. Тоесть выбираю я соседний и он активируется как в аранже, так и в мидиредакторе. Но есть один незначительный момент, который не очень нравится. Когда нет созданного айтема на дорожке выскакивает предупреждение об его отсутствии (добавил скрин). Собственно вопрос: можно как то это исправить чтобы ошибка не выскакивала? может добавить в код что то? люди знающие подскажите пожалуйста.

local r = reaper

local ME = r.MIDIEditor_GetActive()
local take = r.MIDIEditor_GetTake(ME)
local tr = r.GetMediaItemTake_Track(take)


function Check_reaper_ini(key)
local f = io.open(r.get_ini_file(),'r')
local cont = f:read('a*')
f:close()
return cont:match(key..'=(%d+)')
end


local flags = tonumber(Check_reaper_ini('midieditor'))
local per_track = flags&1 == 0 and flags&2 == 2
local per_proj = flags&1 == 1 and flags&2 == 0
local follows_selection = per_proj and flags&128 == 0 -- per project + 'Active MIDI item follows selection changes in arrange view'

if per_track or per_proj then

r.PreventUIRefresh(1)

local x = r.GetCursorPosition()

for i = 0, r.GetTrackNumMediaItems(tr)-1 do
local item = r.GetTrackMediaItem(tr, i)
local st = r.GetMediaItemInfo_Value(item, 'D_POSITION')
local fin = st + r.GetMediaItemInfo_Value(item, 'D_LENGTH')
if x >= st and x <= fin then
r.SelectAllMediaItems(0, false) -- selected false // deselect all
r.SetMediaItemSelected(item, true) -- selected true
r.UpdateItemInProject(item)
break end
end

if per_track or not follows_selection then -- when per project and 'Active MIDI item follows selection' is ON item is auto-opened in the MIDI Editor and this condition is false
r.Main_OnCommand(40153,0) -- Item: Open in built-in MIDI editor (set default behavior in preferences)
end

r.PreventUIRefresh(-1)

return r.defer(function() do return end end) end
 

Вложения

  • 1.png
    1.png
    11,2 KB · Просмотры: 113
Последнее редактирование:
Привет, всем!
Мой друг планирует сделать автоматизацию VCA аналоговой консоли из DAW. Вопрос: знаете ли вы способ посылать COM команды на определённый порт из Рипера?
Если нужны дополнительные детали - спрашивайте. Я тогда переспрошу у друга.
Спасибо!
 
Привет всем. А возможно сделать так ,чтоб по нажатию добавлялся новый трек с FX (к примеру ezDrummer ) с названием Drum. И так для любого инструмента с заранее прописанным названием трека?
 
Привет всем. А возможно сделать так ,чтоб по нажатию добавлялся новый трек с FX (к примеру ezDrummer ) с названием Drum. И так для любого инструмента с заранее прописанным названием трека?
примерно так
217429


Либо просто трэк темплейт создать
 
Или через мой скрипт

Yannick_Insert VSTi by name to new track.lua

Размножая дубликаты с помощью скрипта, если необходимо много кнопок/шорткатов (скопировать имя скрипта в буфер обмена и применить скрипт)

Yannick_Duplicate in one file Lua script from my repository by name from clipboard for customisation.lua

Или составить выпадающее меню, его тоже дубликатом сделать обязательно для настройки

Yannick_Insert VSTi by name to new track in Popup Menu.lua
 
  • Like
Реакции: Beckoff и sve
Запускаю плагин экшеном, что то редактирую, потом запускаю другой плагин экшеном, но окно плагина не открывается (гифку прикрепил).
Подскажите, что добавить в кастом, чтобы окно вновь запущенного плагина открывалось? Есть вариант Create shortcut, но в (actions) его нет, и собрать цепочку действий не получится. Вот используемый экшн для запуска vst.
Custom:
SWS/S&M: Resources - Paste FX chain to selected tracks, slot
SWS/S&M: Show FX chain for selected tracks (selected FX)
SWS/S&M: Select last FX for selected tracks
SWS/S&M: Float selected FX for selected tracks
 
Когда то давно натыкался на решение позволяющее расположить выбранные в медиа браузере файлы каскадом, каждый на новый присвоенный трек, один за другим, когда каждый последующий айтем располагается после предыдущего. Не могу отыскать (
 
Привет. Подскажите, пожалуйста, можно ли сделать экшен, что бы одним действием на треке, включался мониторинг, кнопка готовности к записи и настройка определенного входа?(например сразу подключалась миди клава)
Я пробовал создать сам, но не могу найти экшен мониторинга и ни знаю где найти экшен миди и аудио входов.
 

Вложения

  • запись.png
    запись.png
    7,8 KB · Просмотры: 97

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