ReaScripts (скрипты для Reaper) - обсуждение (1 онлайн

Maestro Sound

Active Member
1 Ноя 2007
616
70
28
Всем привет.
Нужно двигать тональность всего проекта до тех пор пока вокалист не скажет - вот, это то где мой голосовой диапазон будет работать хорошо.
Для этого пишу всю гармонию синтов через midi дорожки.
Каким скриптом выделять и двигать вверх/вниз все миди партии проекта?
Возможно на вопрос уже отвечать и я все прощелкать.
А как же барабасы? Если они в миди то их трогать нельзяяяяя!
 

Ga_rY

Мучитель-синтезаторов
2 Янв 2008
1.299
778
113
57
Полтава, UA
www.realmusic.ru
@Maestro Sound, для ударных в минусовках использую подходящие петли, временно их хватает.
Можно конечно как говорит Slick миди выделять руками, обходя вавки но это не очень удобно.
В идеале было бы иметь два скрипта один из которых выделяет все миди и двигает на полтона вверх, другой тоже самое, но на полтона вниз.
 

Archchie

Well-Known Member
24 Окт 2017
795
440
63
В идеале было бы иметь два скрипта один из которых выделяет все миди и двигает на полтона вверх, другой тоже самое, но на полтона вниз.
Archie_Item; Pitch down one semitone all midi items(all midi take).lua / Raw
Archie_Item; Pitch up one semitone all midi items(all midi take) .lua / Raw
 
  • Like
Реакции: Ga_rY

Slick

IDDQD
13 Май 2008
1.998
924
113
34
Москва, Апрелевка
www.vk.com
обходя вавки но это не очень удобно
почему обходя то? ) обходя материал, который не нуждается в изменении питча (эффекты, барабаны). но бывает куча материала в wav, который надо так же транспонировать.
 

Vilia33

Active Member
8 Ноя 2009
377
80
28
Item properties: Pitch item up one semitone
Item properties: Pitch item down one semitone
Вот эти транспонируют и миди и аудио
 

Ga_rY

Мучитель-синтезаторов
2 Янв 2008
1.299
778
113
57
Полтава, UA
www.realmusic.ru
@Archchie, спасибо огроменное, это то что надо.
@Slick, согласен, все правильно у Вас более широкий вариант, но вот именно в моем узком случае нужно менять тональность только миди.
 

borisuperful

Well-Known Member
31 Янв 2013
1.339
482
83
@Ga_rY, я хотел без изменения питча айтема сделать, вот
Код:
local count_items = reaper.CountMediaItems(0)
if count_items ~= 0 then
local retval, set_value = reaper.GetUserInputs( "Transpose all MIDI items", 1, "Set value", 0)
  if retval then
    reaper.Undo_BeginBlock(1)
    reaper.PreventUIRefresh(1)
    for i = 0, count_items-1 do
      local get_item = reaper.GetMediaItem(0, i)
      local count_takes = reaper.CountTakes(get_item)
      for i = 0, count_takes-1 do
        local get_take = reaper.GetTake(get_item, i)
        local get_midi = reaper.TakeIsMIDI(get_take)
        if get_midi == true then
          local _, notes = reaper.MIDI_CountEvts(get_take)
          for i = 0, notes-1 do
            local retval, sel, muted, startppq, endppq, chan, pitch, vel = reaper.MIDI_GetNote(get_take, i)
            reaper.MIDI_SetNote(get_take, i, sel, muted, startppq, endppq, chan, pitch + set_value, vel)
          end
        end
      end
      reaper.UpdateItemInProject(get_item)
    end
    reaper.Undo_EndBlock("Transpose all MIDI items", -1)
    reaper.PreventUIRefresh(-1)
  end
end
 
Последнее редактирование:

borisuperful

Well-Known Member
31 Янв 2013
1.339
482
83
@Ga_rY, да, именно так. То есть на уровне источника. Еще он с окном где вводишь сколько полутонов
 

Ga_rY

Мучитель-синтезаторов
2 Янв 2008
1.299
778
113
57
Полтава, UA
www.realmusic.ru
@borisuperful, сейчас попробовал этот скрипт который постом выше.
Получается следующий глюк: когда вводишь значения 1-2 вроде все нормально, а когда 3 и больше, начинается микроглюки в партии.
Первый скриншот до, второй после того как подняли на 3.
 

Вложения

borisuperful

Well-Known Member
31 Янв 2013
1.339
482
83
@Ga_rY, наверное бажит API. Это будет еще и по разному на разных нотах
З.Ы, Кажется причина в привязке к сетке
 

Archchie

Well-Known Member
24 Окт 2017
795
440
63
@Ga_rY, Если надо что бы двигались ноты, то вот
Archie_Item; Move all notes in all midi items one semitone up.lua (Raw)
Archie_Item; Move all notes in all midi items one semitone down.lua (Raw)
Archie_Item; Move all notes in all midi items in semitones(User Input).lua (Raw)
-------------------------------------------------------------------------------------------------
наверное бажит API.
Нет, это не апи бажит.
Во первых при удалении и при перемещении надо тщательно продумывать циклы, так как меняется порядок перемещаемого или удаляемого, а в нотах еще и нет своего собственного идентификатора и нумерация происходит по нумерации.
То есть пример на четырех нотах: Когда цикл от одного до кол-во нот (ноты стоят в одной позиции и от квантованы, а это означает, что первая нота- это нижняя, а последняя верхняя),так вот, если перемещение происходит в верх, то вот что произойдет, когда переместится первая нота в верх, то тут же вторая нота превратится в первую, а при второй итерации надо получить вторую ноту и тут мы и получим вторую ноту, тем самым мы пропустили уже одну ноту "первую, которая должна и быть второй" и т.д., а если перемещение происходит в низ, то все в порядке будет, за исключением одного "но*"
То есть на будущее, когда удаляешь или перемещаешь, надо делать цикл в соответствующем направлении. В данном случае например делается, если перемещаешь ноты в верх, то цикл должен быть от кол-во нот до нуля, а если перемещаешь в низ, то цикл должен быть от нуля до кол-во нот. То есть надо делать два цикла.
------
* Когда несколько нот стоят в одном положении и от квантованные (чего некогда не бывает), то все сработает правильно, при циклах которые я описал выше, а если ноты сдвинуты хоть на пол микрона(чего ты при максимальном зуме не увидишь), то тут уже начнутся глюки, так как скрипт уже начнет перебирать ноты не по порядку, "то есть по порядку - но по временному, которого мы не видим".
Что бы получать точно ноты, надо всегда заморачиваться с квантайзом, а для понимания - если ты мышкой потрогал ноту, то она тут же становится не от квантованной, хоть и даже привязана к сетке
 
  • Like
Реакции: Ga_rY и borisuperful

borisuperful

Well-Known Member
31 Янв 2013
1.339
482
83
@Archchie, я понял, просто не было еще времени задуматься :) Я предполагал, что можно было поиграть с циклами инкремент/декремент
 
  • Like
Реакции: Archchie

Archchie

Well-Known Member
24 Окт 2017
795
440
63
@borisuperful, И вот так вроде бы нельзя делать, когда цикл в цикле и все счетчики одинаковые
upload_2018-12-24_3-5-32.png
 
Последнее редактирование:
  • Like
Реакции: borisuperful

@Michael

Well-Known Member
14 Дек 2010
899
1.359
93
Орёл / Москва
  • Like
Реакции: Archchie

Archchie

Well-Known Member
24 Окт 2017
795
440
63
@@Michael, Сегодня кстати натыкался вот на эту функцию "MIDI_GetAllEvts", но так и не вкурил, что она делает.
 

Ga_rY

Мучитель-синтезаторов
2 Янв 2008
1.299
778
113
57
Полтава, UA
www.realmusic.ru
Ну вообще шикарно! Вы молодцы. Теперь подогнать тональность под голосовой диапазон стало на раз-два.
@Archchie, отдельное спасибо еще раз.
 

Maestro Sound

Active Member
1 Ноя 2007
616
70
28
...rious\mpl_PitchEditor_functions/mpl_PitchEditor_data.lua:241: bad argument #1 to 'DeleteEnvelopePointRange' (TrackEnvelope expected)

При коррекции мышкой драгдроп, а при повторном запуске работает нормально/

И думаю шаг коррекции и масштаб делать по полутонам, а не октавами
 

Вложения

  • 33,2 KB Просмотры: 16
Последнее редактирование:

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