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

  • Автор темы Автор темы @Michael
  • Дата начала Дата начала
Наиграл партию миди, запустил RetroRecMidi(EUGEN27771) скрипт.
Теперь, подскажите возможно ли создать вот такой кастом-экшн(или скрипт):
Move selected item(s) edges(left,right) to grid...???(название придумал сам)
Вот гифка:
ITEM EDGES TO GRID.gif
 
@Furqat, скрипт подгоняет концы выделенных айтемов к ближайшим делениям сетки. Содержимое остается на месте
Спасибо огромное.
А можно ли RetroRec(EUGEN27771) скрипт и Ваш скрипт воткнуть в один кастом экшн?
Было бы суперудобно.
Пока сам не могу проверить, электричество отключили)))
 
  • Like
Реакции: Slick
@lil-burn, вот это крутяк!!!
Только что проверил.
Ваш скрипт и на аудио сигналах работает.
============================
Упс. На аудио сигналах иногда работает иногда нет.
С чем это связано?
 
Последнее редактирование:
@Furqat, может быть такая ситуация, когда айтем меньше половины деления сетки, а т.к. скрипт подгоняет к ближайшим делениям, то ничего не происходит, иначе длина айтема была бы = 0. Можно сделать конкретно для этого случая исключение, можно сделать скрипт, который всегда будет подгонять в сторону увеличения длины.

@Al Brazy, скоро будет
 
  • Like
Реакции: Furqat
@Furqat, может быть такая ситуация, когда айтем меньше половины деления сетки, а т.к. скрипт подгоняет к ближайшим делениям, то ничего не происходит, иначе длина айтема была бы = 0. Можно сделать конкретно для этого случая исключение, можно сделать скрипт, который всегда будет подгонять в сторону увеличения длины.

@Al Brazy, скоро будет
Будем ждать тогда)))
 
Подскажите, можно ли при помощи SWS команд или как-нибудь еще поместить активное "float" окно плагина в центр экрана?
[DOUBLEPOST=1457182085,1457181495][/DOUBLEPOST]И еще вопрос вопросов: можно ли как-то сделать так чтобы по нажатию горячей клавиши, например Alt+F1 запускался скрипт который активирует набор горячих клавиш, а при повторном нажатии Alt+F1 этот набор горячих клавиш отключался?

Например. Биндим клавиши Q = Alt+F1, W = Alt+F2, и так далее а потом нажатием 1 хоткея включаем и отключаем эти привязки. То есть 1 нажатием превращаем обычную компьютерную клавиатуру в эдакую матрицу горячих клавиш на которой подвешены всякие действия (после чего подключаем 2 клавиатуру и наклеиваем на кнопки стикеры с обозначением действий, чтобы а) разгрузить интерфейс б) не запоминать 40-60-80 хоткеев но иметь быстрый доступ ко всему по нажатию Alt+F1)
 
Последнее редактирование:
@D-Forest,

можно ли при помощи SWS команд или как-нибудь еще поместить активное "float" окно плагина в центр экрана?
Можно, если поставить мышь в центр экрана и создать кастом с участием одного из этих экшенов
upload_2016-3-8_0-54-20.png
Вроде, пока только так.

можно ли как-то сделать так чтобы по нажатию горячей клавиши, например Alt+F1 запускался скрипт который активирует набор горячих клавиш, а при повторном нажатии Alt+F1 этот набор горячих клавиш отключался?
Можно, но пока это реализуемо только с помощью правки, а точнее добавления строк у файла reaper-kb.ini, процесс достаточно трудоемкий, если интересно - в этом же топике, примерно на 10 страниц назад, ищите сообщение @Aleksandr Oleynik, это его идея.
 
Всем привет нужэн скрипт . select pitch envelope . на итеме или тейке подскажите как её выделить
 
@abrokadabra2, это скрипт от @EUGEN27771.
там нужно поменять 2 строки (можно вообще только 5-ю, заменить 'Volume' на 'Pitch')
в итоге получится:
Код:
//==Get Act Take from 1-st Item==//
Item_ID=GetSelectedMediaItem(0,0);
Take_ID=GetActiveTake(Item_ID);
//==Get Basic Envelopes by Name==//
Env_Pitch_ID=GetTakeEnvelopeByName(Take_ID, "Pitch");SetCursorContext(2, Env_Pitch_ID);
//Env_Pan_ID=GetTakeEnvelopeByName(Take_ID, "Pan");SetCursorContext(2, Env_Pan_ID);
//Env_Mute_ID=GetTakeEnvelopeByName(Take_ID, "Mute");SetCursorContext(2, Env_Mute_ID);
UpdateArrange();
 
burn . это eеl или lua
[DOUBLEPOST=1457432012,1457431391][/DOUBLEPOST]Burn спасибо всё работает буду екшен мутить
 
Вот опять я на счет скриптов RetroRec(EUGEN27771).
Как настроить скрытые треки (с JS-ками) так, чтобы rec arm для них никогда не отключался.
Может есть экшн какой, чтобы постоянно включал rec arm перед RetroRec?
Для чего это нужно?!?!?!
У меня основные операции делаются с ctrl, так настроил маус модифаер удобным.
И часто нажимаю на rec arm с ctrl, когда быстро работаю.
А эта зараза(привычка) отключает rec arm в скрытых треках RetroRec-а.
Надеюсь обьяснил.
 
@Furqat, залочить трек с включенным rec-arm нельзя, вернее можно(через чанк), но если Рипер не дает возможности сделать это своими обычными средствами, то,видимо, на то есть причины.
Но,можете попробовать
PHP:
--Lock RetroRec Tracks--
---------------------------
function Find_JS_Track(Name)
local track,retval,cur_name
for i = 1,reaper.CountTracks(0) do
  track = reaper.GetTrack(0, i-1)
  retval,cur_name = reaper.GetSetMediaTrackInfo_String(track, "P_NAME", "", false)
  if cur_name == Name then return track end
end 
end
---------------------------
function Lock_Track(track)
local retval,tr_chunk,find_str
  --Change Setting for track--
  reaper.SetMediaTrackInfo_Value(track, "I_RECARM",1)--RECARM
  reaper.SetMediaTrackInfo_Value(track, "I_RECMON",1)--RECMON
  -----
  retval,tr_chunk = reaper.GetTrackStateChunk(track, "", false)
   --reaper.ShowConsoleMsg(tr_chunk)
     ----Change chunk for track--
     find_str = string.match(tr_chunk, "PEAKCOL"  )
     tr_chunk = string.gsub(tr_chunk, find_str, "LOCK 1".."\n"..find_str)
     reaper.SetTrackStateChunk(track, tr_chunk, true)
     --reaper.ShowConsoleMsg(tr_chunk)
end
---------------------------
---------------------------
reaper.Undo_BeginBlock()
  track = Find_JS_Track("ForRetroRec(Audio) v20151213(b1)")
    if track then Lock_Track(track) end
  track = Find_JS_Track("ForRetroRec(MIDI) v20151213")
    if track then Lock_Track(track) end
reaper.Undo_EndBlock("~Lock RetroRec Tracks~", -1)
 
Последнее редактирование:
  • Like
Реакции: Furqat
@Furqat, залочить трек с включенным rec-arm нельзя, вернее можно(через чанк), но если Рипер не дает возможности сделать это своими обычными средствами, то,видимо, на то есть причины.
Но,можете попробовать
PHP:
--Lock RetroRec Tracks--
---------------------------
function Find_JS_Track(Name)
local track,retval,cur_name
for i = 1,reaper.CountTracks(0) do
  track = reaper.GetTrack(0, i-1)
  retval,cur_name = reaper.GetSetMediaTrackInfo_String(track, "P_NAME", "", false)
  if cur_name == Name then return track end
end
end
---------------------------
function Lock_Track(track)
local retval,tr_chunk,find_str
  --Change Setting for track--
  reaper.SetMediaTrackInfo_Value(track, "I_RECARM",1)--RECARM
  reaper.SetMediaTrackInfo_Value(track, "I_RECMON",1)--RECMON
  -----
  retval,tr_chunk = reaper.GetTrackStateChunk(track, "", false)
   --reaper.ShowConsoleMsg(tr_chunk)
     ----Change chunk for track--
     find_str = string.match(tr_chunk, "PEAKCOL"  )
     tr_chunk = string.gsub(tr_chunk, find_str, "LOCK 1".."\n"..find_str)
     reaper.SetTrackStateChunk(track, tr_chunk, true)
     --reaper.ShowConsoleMsg(tr_chunk)
end
---------------------------
---------------------------
reaper.Undo_BeginBlock()
  track = Find_JS_Track("ForRetroRec(Audio) v20151213(b1)")
    if track then Lock_Track(track) end
  track = Find_JS_Track("ForRetroRec(MIDI) v20151213")
    if track then Lock_Track(track) end
reaper.Undo_EndBlock("~Lock RetroRec Tracks~", -1)
А это .eel скрипт?
==================
Проверил только что, .lua работает))))))))
 
Последнее редактирование:
Подскажите как сделать экшн. Я записал миди партию из нескольких нот в главном окне. И хочу чтобы эти ноты переместились на октаву вверх или низ. Чтобы каждый раз не заходить в окно midi editor выделять ноты и их перемещать, а всё делать в главном окне. Простой transpose айтема не надо, надо видеть как сами ноты изменяют положение. Как это сделать?
 
@@Michael, имеется в виду,что есть еще транспонирование без визуального отображения(типа, как в свойствах айтема),ноты остаются на месте, но звучат выше или ниже.
П.С. Или речь о FFT ? Что-то я уже соображаю туго. Просто находится макс. амплитуда на определенной частоте. Размер окна нужен большой для хорошего разрешения по частоте,поэтому,по идее, надо делать часто перекрывающиеся окна,а края заполнять нулями(вроде так должно работать лучше). А так получаются погрешности по времени и по частоте немного.
============
[DOUBLEPOST=1457790646,1457788556][/DOUBLEPOST]@@Michael, если есть пару минут свободных,подскажи,как blit работает. В общем,например,я получаю форму волны,по блокам, и нужно перерисовать только один последний блок,а уже нарисованное сдвинуть на масштаб,не перерисовывая.
1234.gif
Сейчас это без толку жрет ресурсы.
Ну или другие случаи.
 
EUGEN27771, а, я думал что-то посложнее (сам смотрю в сторону comb-filters + автокорелляции спектра).

Blit примерно так работает:
Код:
      if update_gfx then -- cначала определяем триггер, по которому в какой-либо из буферов будет писаться графика
        gfx.dest = 1 -- номер буфера 1..32 (кажется)
        gfx.setimgdim(1, -1, -1) -- этим я сбрасываю графику внутри этого буфера, иначе она будет писаться поверх того, что уже есть
        gfx.setimgdim(1, w, h) -- определяем размеры записываемой графики
        gfx.a = 1
        gfx.rect(0,0, w,h) -- рисуем что требуется
      end


gfx.dest = -1  -- -1 - это основной слой
gfx.a = 1 -- альфа для буферов
gfx.blit(1, 1, 0, -- этим вытаскиваем первый буфер и сразу его переворачиваем/обрезаем/сжимаем при необходимости
          0,0,w,h,
          0,0,w,h,0,0)
 
  • Like
Реакции: Archie's и EUGEN27771
@@Michael,честно говоря, меня уже от всяких фильтров тошнит, с учетом, что английский я слабо понимаю, а вся инфа на нем.
И математики куча, мне бы лет на 10 раньше это все, а сейчас еще математику учить - это слишком, только какие-то книги для дебилов, и с картинками.
Но саму методику я находил и на русском, там до 1/6 Гц точность, при соблюдении всех условий.
Спасибо за инфу по blit!
=====
Все, работает,еще раз спасибо!!!
В общем,проблема была в gfx.setimgdim,насколько я понял,это как-бы init для буфера, теперь есть простор :)
 
Последнее редактирование:

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