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

tosh

Active Member
5 Окт 2005
525
147
43
Кременчуг UA
Парни, команда Set point value давно существует в всплывающем меню (ПКМ на точке автоматизации), в вот в списке actions ее нет, не могли бы Вы помочь написать какой-нить скрипт, чтобы эта опция появилась в списке actions и на нее можно было повесить shortcut
Скрин.jpg
 

tosh

Active Member
5 Окт 2005
525
147
43
Кременчуг UA
Просто замечательно. Один маленький нюанс, когда нажимаешь "родную" команду из всплывающего окна, в окошке, в котором нужно вводить значение, указано текущее значение точки автоматизации (удобно, соответственно уменьшаешь его или увеличиваешь), в скрипте же - пустое окошко. Нет ли возможности немного подправить скрипт? Заранее благодарен.

Скрин.jpg
 
Последнее редактирование:

tosh

Active Member
5 Окт 2005
525
147
43
Кременчуг UA
@@Michael, Можно "+" и "-" вроде использовать (могу ошибаться, с телефона неудобно код смотреть).
Да, вводить значения можно и с "+" и с "-". Нет ли возможности подправить скрипт, чтобы окно для ввода значений открывалось, как в "родной" команде? То есть уже со значением текущей, выделенной точки автоматизации.
 

@Michael

Well-Known Member
14 Дек 2010
969
1.461
93
Орёл / Москва
EUGEN27771,
PHP:
  midieditor = reaper.MIDIEditor_GetActive()
  if  midieditor ~= nil then
    is_scale_enabled = reaper.MIDIEditor_GetSetting_int(midieditor, "scale_enabled")
    if is_scale_enabled == 1 then
   
      --form pattern table
      scale_root = reaper.MIDIEditor_GetSetting_int(midieditor, "scale_root")
      retval, scale_pat_original = reaper.MIDIEditor_GetSetting_str(midieditor, "scale", "")
      scale_pat = string.sub(scale_pat_original, 13-scale_root).. string.sub(scale_pat_original, 0, 12-scale_root)
      scale_pat_t={}
      scale_pat:gsub(".",function(c) if c ~= "0" then c = "1" else c = "0"end table.insert(scale_pat_t,c)end)
     
      --loop through selected items notes
      sel_item_count = reaper.CountSelectedMediaItems(0)
      if sel_item_count ~= nil and scale_pat_t ~= nil then
        for i = 1, sel_item_count do
          item = reaper.GetSelectedMediaItem(0, i-1)
          count_takes = reaper.CountTakes(item)
          if count_takes ~= nil then
            for j = 1, count_takes do
              take = reaper.GetTake(item, j-1)
              if take ~= nil then
                table_to_insert = {}
                retval, notecnt = reaper.MIDI_CountEvts(take)
                if notecnt ~= nil then
                  for k = 1, notecnt do
                    retval,selected, muted, startppqpos, endppqpos, chan, pitch, vel = reaper.MIDI_GetNote(take, k-1)
                    pitch_norm = pitch % 12                   
                    if scale_pat_t[pitch_norm+1] == "0" then
                       set_pitch = pitch
                       m = 1
                       repeat
                         set_pitch = set_pitch + m
                         pitch_norm = pitch % 12
                       until
                         (scale_pat_t[pitch_norm+1] == "0")
                      else
                       set_pitch = pitch
                    end
                    temp_table = {selected, muted, startppqpos, endppqpos, chan, set_pitch, vel}
                    table.insert(table_to_insert, temp_table)
                   
                  end                   
                end
                reaper.MIDI_Sort(take)
               
                -- delete notes from take
                if notecnt ~= nil then
                  for o = 1, notecnt do
                    reaper.MIDI_DeleteNote(take, 0)
                    reaper.MIDI_Sort(take)
                  end
                end      
               
                -- insert new notes from table
                if table_to_insert ~= nil then
                  for n = 1, #table_to_insert do
                    temp_table = table_to_insert[n]
                    selected, muted, startppqpos, endppqpos, chan, pitch, vel =
                      temp_table[1],temp_table[2],temp_table[3],temp_table[4],temp_table[5],temp_table[6], temp_table[7],
                    reaper.MIDI_InsertNote(take, selected, muted, startppqpos, endppqpos, chan, pitch, vel, true)
                  end
                end 
              end
              reaper.MIDI_Sort(take)
            end
          end
          reaper.UpdateItemInProject(item)
        end
      end     
    end
  end
 

Вложения

  • 257,5 KB Просмотры: 174
  • Like
Реакции: EUGEN27771

Andrey Marchenko

Active Member
10 Апр 2007
654
106
43
39
Moscow, Russia
Парни, команда Set point value давно существует в всплывающем меню (ПКМ на точке автоматизации), в вот в списке actions ее нет, не могли бы Вы помочь написать какой-нить скрипт, чтобы эта опция появилась в списке actions и на нее можно было повесить shortcut
Посмотреть вложение 102987
А почему бы просто через Mouse Modifiers не настроить всплывающее окно эдитора для точки автоматизации? У меня оно всплывает просто по дабл-кику по точке ;)
 
  • Like
Реакции: tosh

@Michael

Well-Known Member
14 Дек 2010
969
1.461
93
Орёл / Москва
EUGEN27771, работает как надо? Просто я почти не пользуюсь midi и не музыкальный человек (не имею представления о ладах и всём таком), так что если что, подправить можно, впрочем, я думаю, вы и сами можете вполне)
 

Vet

Active Member
13 Окт 2009
104
115
43
Парни, может тогда и мою проблемку допилим? :)
 

EUGEN27771

Well-Known Member
23 Апр 2010
2.293
1.995
113
@@Michael, нет,он у меня вообще не работает(наверное,с настройками связано),но я мысль примерно понял,попробую на основе сделать.Плохо,что eel таблицы не поддерживает,в lua придется покопаться.Или,можно проходить ноты и сразу,по ходу цикла удалять-вставлять,меняя питч.
 

@Michael

Well-Known Member
14 Дек 2010
969
1.461
93
Орёл / Москва
EUGEN27771, я так изначально сделал. Но MIDI_Sort не всегда корректно работает (если не забуду, как-нибудь смоделирую ситуацию и отправлю багрепорт Кокосам, основная проблема в том, что при Set_Note происходит overlapping), поэтому я собираю ноты в таблицу с уже изменённым питчем, удаляю все ноты из тейка, и заново их добавляю из таблицы.
 

Vet

Active Member
13 Окт 2009
104
115
43
@EUGEN27771, Действительно. У вас отрабатывает как надо. Может, как-то зависит от глобальных настроек? Поищу. Спасибо!
 

tosh

Active Member
5 Окт 2005
525
147
43
Кременчуг UA
Парни, помнится был скрипт, который создает огибающую по форме волны аудио... подскажите, пожалуйста, его название или прикрепите ссылку к сообщению.

Заранее благодарен.
 
Последнее редактирование:

tosh

Active Member
5 Окт 2005
525
147
43
Кременчуг UA
@lil-burn, Есть ли эшен, который квантизует по сетке только конец (правый край) ноты? Не нашел
Quantize notes position and end to grig - его совсем недавно допилили, мы просто не нарадуемся ;) он до этого срабатывал не совсем корректно, Джастину скинули описание бага и он сделал все как надо.
 

lil-burn

Well-Known Member
15 Авг 2012
903
638
93
Екатеринбург
Quantize notes position and end to grig - его совсем недавно допилили, мы просто не нарадуемся ;) он до этого срабатывал не совсем корректно, Джастину скинули описание бага и он сделал все как надо.
Может, не совсем правильно выразился - нужно двигать только правый край, левый всегда должен оставаться на месте (даже если не квантизован по сетке)
 

tosh

Active Member
5 Окт 2005
525
147
43
Кременчуг UA
@lil-burn, Может, не совсем правильно выразился - нужно двигать только правый край, левый всегда должен оставаться на месте (даже если не квантизован по сетке)
Именно так и есть, команда Quantize notes position and end to grig квантизует только правый край (end), что видно даже из названия команды.
Еще есть хорошие команды:
- Edit: Shorten notes one pixel - она уменьшает ноту на один пиксель.
- Edit: Lengthen notes one pixel
- увеличивает на один пиксель.
- Edit: Shorten notes one grid unit - она уменьшает ноту на значение сетки (снепа).
- Edit: Lengthen notes one grid unit - увеличивает на значение сетки (снепа).
 

lil-burn

Well-Known Member
15 Авг 2012
903
638
93
Екатеринбург
Именно так и есть, команда Quantize notes position and end to grig квантизует только правый край (end), что видно даже из названия команды.
Странно, но почему-то до сих пор думал, что под Quantize notes position скрывается квантизация начала нот (левого края), тогда Quantize notes position and end to grid - не что иное, как подгонка начала и конца ноты к соответствующим ближайшим делениям сетки. По крайней мере у меня оно работает именно так, пруф уже в студии:)
 

Вложения

naash_g

Mixing...
5 Авг 2008
2.557
581
113
Che...
Очень хотелось бы иметь возможность открывать "морду" ревербератора (к примеру) прямо из трека,с которого организован посыл в микшере(аналог кнопки "е" на сенде в Кубэйсе).
В микшере ПКМ на сенде есть команда "Go To Send Destination Track" .От этого,по идее,можно "плясать",но вот как это скриптом реализовать?
Так ни у кого и не получилось осуществить это?? Тоже хотелось бы при нажатии клавишей или группой клавиш и мышкой получить открытие плагина с эффектом на который назначен посыл.
 

naash_g

Mixing...
5 Авг 2008
2.557
581
113
Che...
@@Michael, это получается что мне нужно перебрать все возможные плагины которые будут возможно когда либо стоять там. А сделать бы так, чтобы на любой плагин срабатывало.
 

EUGEN27771

Well-Known Member
23 Апр 2010
2.293
1.995
113
@naash_g, там было более конкретное условие-по имени ревера,уже в следующем посте есть упрощенный вариант
 

@Michael

Well-Known Member
14 Дек 2010
969
1.461
93
Орёл / Москва
Посыл назначается на трек, а не на плагин. А на треке посыла может быть несколько плагинов. И ты не сказал, что делать в том случае, если плагинов много. Открывать все или только первый или что-то ещё.
 

J T

Member
17 Май 2011
143
23
18
37
RF
Быть может немножко не в тему, но всё же. Нужен простой JS плагин. Аналог Brainworx bx_solo, крутилка Stereo-Width не обязательна. Помогите кто сможет.
 

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