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

25 Июл 2017
102
23
18
40
Там ничего не надо делать. Просто установить в ресэмплинге 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

Mr_Tsonts

Well-Known Member
18 Апр 2019
1.656
1.341
113
56
Киев
@Дима Горелик, можете проверить. Откройте окно рендера и запустите скрипт, увидите как в окне рендера изменится запись во вкладке ресэмплинга.
 

ljohn149

New Member
20 Фев 2022
1
0
1
45
Всех приветствую. Вопрос такой: как выбрать в скрипте lua нужную огибающую
либо сохранить- восстановить выделенную, чтобы к ней вернуться?
Вот reaper.GetSelectedTrackEnvelope есть, чтобы получить, а Set как сделать?
Нужно для доработки одного скрипта, который я сам написал, несмотря на то, что полный нуб в программировании.
Скрипт ставит зависимые (in pool) айтемы автоматизации по стретч маркерам выделенного медиа айтема. Образец загружается. Причём айтемы автоматизации можно ставить на любую выделенную огибающую любой дорожки. Для расстановки же стретч маркеров по транзиентам использую MK-slicer от Максим Кокарева.
Мой же скрипт, хоть и написан по-нубски, уже хорошо работает, но хотелось бы исключить возможную ошибочную ситуацию, связанную с возможным неправильным содержимым буфера обмена (промежуточные операции копирования) в случае отказа от загрузки образца айтема автоматизации.
 

arkaine

Active Member
13 Сен 2007
640
128
43
Помогите, пожалуйста...

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


ЧТО НУЖНО:

Посылать 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

Well-Known Member
14 Дек 2010
969
1.461
93
Орёл / Москва
Помогите, пожалуйста...

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


ЧТО НУЖНО:

Посылать 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 шли вниз.

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

arkaine

Active Member
13 Сен 2007
640
128
43
@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?

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

variator

Active Member
9 Сен 2008
413
45
28
Здравствуйте! Как известно, при зажатых ctrl+shift мы можем тянуть огибающую, находящуюся в области выделения. Часто вручную приходится увеличивать "вход" и "выход" огибающей.
Хотелось бы скрипт, позволяющий делать это с помощью колесика мыши (или с клавиатуры).
215407
 

seryoga9393

New Member
24 Июн 2021
19
0
1
Доброго времени суток! Я правильно понимаю, что для создания действия, которого нет в списке действий нужно писать скрипт?

Возникла необходимость перейти к маркеру 31, а в списке действий их всего 30. Также нужно управлять громкостью трека 100, а их в списке только 99
 

Martin111

Member
18 Фев 2015
482
20
18
53
Запускаю плагин экшеном, что то редактирую, потом запускаю другой плагин экшеном, но окно плагина не открывается (гифку прикрепил).
Подскажите, что добавить в кастом, чтобы окно вновь запущенного плагина открывалось? Есть вариант 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
 

Вложения

  • 580,3 KB Просмотры: 83

AlexLazer

Well-Known Member
26 Янв 2009
2.668
1.412
113
40
Russia, Stavropol
soundprofi.ru
Запускаю плагин экшеном, что то редактирую, потом запускаю другой плагин экшеном, но окно плагина не открывается (гифку прикрепил).
Подскажите, что добавить в кастом, чтобы окно вновь запущенного плагина открывалось? Есть вариант 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
 

BRG

Member
6 Сен 2017
100
7
18
Можно ли создать (или может уже есть) экшн, который будет выделять ноты в миди редакторе через одну? какими командами можно это реализовать? 2, 4, 8, 16 неважно сколько нот в такте, чтобы после применения команды именно каждая вторая была выделена.
 

muzicgrand

Well-Known Member
26 Ноя 2009
462
775
93
44
СССР
Можно ли создать (или может уже есть) экшн, который будет выделять ноты в миди редакторе через одну? какими командами можно это реализовать? 2, 4, 8, 16 неважно сколько нот в такте, чтобы после применения команды именно каждая вторая была выделена.
MIDI Selector.gif
 
  • Like
Реакции: BRG

BRG

Member
6 Сен 2017
100
7
18
Ребята. Есть такой у меня скрипт. Его функция активация айтема внутри миди редактора по лкм. Тоесть выбираю я соседний и он активируется как в аранже, так и в мидиредакторе. Но есть один незначительный момент, который не очень нравится. Когда нет созданного айтема на дорожке выскакивает предупреждение об его отсутствии (добавил скрин). Собственно вопрос: можно как то это исправить чтобы ошибка не выскакивала? может добавить в код что то? люди знающие подскажите пожалуйста.

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
 

Вложения

  • 11,2 KB Просмотры: 86
Последнее редактирование:
25 Июл 2017
102
23
18
40
Привет, всем!
Мой друг планирует сделать автоматизацию VCA аналоговой консоли из DAW. Вопрос: знаете ли вы способ посылать COM команды на определённый порт из Рипера?
Если нужны дополнительные детали - спрашивайте. Я тогда переспрошу у друга.
Спасибо!
 

kunashirec

New Member
24 Авг 2018
8
1
3
48
Привет всем. А возможно сделать так ,чтоб по нажатию добавлялся новый трек с FX (к примеру ezDrummer ) с названием Drum. И так для любого инструмента с заранее прописанным названием трека?
 

Лукьян

Well-Known Member
23 Дек 2017
2.143
1.224
113
36
г. Йошкар-Ола
Привет всем. А возможно сделать так ,чтоб по нажатию добавлялся новый трек с FX (к примеру ezDrummer ) с названием Drum. И так для любого инструмента с заранее прописанным названием трека?
примерно так
217429


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

borisuperful

Well-Known Member
31 Янв 2013
2.017
1.153
113
Или через мой скрипт

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

Nordum

Active Member
28 Окт 2016
171
38
28
Запускаю плагин экшеном, что то редактирую, потом запускаю другой плагин экшеном, но окно плагина не открывается (гифку прикрепил).
Подскажите, что добавить в кастом, чтобы окно вновь запущенного плагина открывалось? Есть вариант 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
 

Nordum

Active Member
28 Окт 2016
171
38
28
Когда то давно натыкался на решение позволяющее расположить выбранные в медиа браузере файлы каскадом, каждый на новый присвоенный трек, один за другим, когда каждый последующий айтем располагается после предыдущего. Не могу отыскать (
 

Vell Very

Member
26 Сен 2016
93
40
18
44
Привет. Подскажите, пожалуйста, можно ли сделать экшен, что бы одним действием на треке, включался мониторинг, кнопка готовности к записи и настройка определенного входа?(например сразу подключалась миди клава)
Я пробовал создать сам, но не могу найти экшен мониторинга и ни знаю где найти экшен миди и аудио входов.
 

Вложения

Сейчас онлайн (Пользователей: 0, Гостей: 1)