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

Maestro Sound

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

Ga_rY

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

Archie's

Well-Known Member
24 Окт 2017
1.936
1.296
113
В идеале было бы иметь два скрипта один из которых выделяет все миди и двигает на полтона вверх, другой тоже самое, но на полтона вниз.
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
2.088
1.040
113
38
Москва, Переделкино
www.vk.com
обходя вавки но это не очень удобно
почему обходя то? ) обходя материал, который не нуждается в изменении питча (эффекты, барабаны). но бывает куча материала в wav, который надо так же транспонировать.
 

Vilia33

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

Ga_rY

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

borisuperful

Well-Known Member
31 Янв 2013
2.017
1.152
113
@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
2.017
1.152
113
@Ga_rY, да, именно так. То есть на уровне источника. Еще он с окном где вводишь сколько полутонов
 

Ga_rY

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

Вложения

borisuperful

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

Archie's

Well-Known Member
24 Окт 2017
1.936
1.296
113
@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.
Нет, это не апи бажит.
Во первых при удалении и при перемещении надо тщательно продумывать циклы, так как меняется порядок перемещаемого или удаляемого, а в нотах еще и нет своего собственного идентификатора и нумерация происходит по нумерации.
То есть пример на четырех нотах: Когда цикл от одного до кол-во нот (ноты стоят в одной позиции и от квантованы, а это означает, что первая нота- это нижняя, а последняя верхняя),так вот, если перемещение происходит в верх, то вот что произойдет, когда переместится первая нота в верх, то тут же вторая нота превратится в первую, а при второй итерации надо получить вторую ноту и тут мы и получим вторую ноту, тем самым мы пропустили уже одну ноту "первую, которая должна и быть второй" и т.д., а если перемещение происходит в низ, то все в порядке будет, за исключением одного "но*"
То есть на будущее, когда удаляешь или перемещаешь, надо делать цикл в соответствующем направлении. В данном случае например делается, если перемещаешь ноты в верх, то цикл должен быть от кол-во нот до нуля, а если перемещаешь в низ, то цикл должен быть от нуля до кол-во нот. То есть надо делать два цикла.
------
* Когда несколько нот стоят в одном положении и от квантованные (чего некогда не бывает), то все сработает правильно, при циклах которые я описал выше, а если ноты сдвинуты хоть на пол микрона(чего ты при максимальном зуме не увидишь), то тут уже начнутся глюки, так как скрипт уже начнет перебирать ноты не по порядку, "то есть по порядку - но по временному, которого мы не видим".
Что бы получать точно ноты, надо всегда заморачиваться с квантайзом, а для понимания - если ты мышкой потрогал ноту, то она тут же становится не от квантованной, хоть и даже привязана к сетке
 

borisuperful

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

Archie's

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

@Michael

Well-Known Member
14 Дек 2010
969
1.461
93
Орёл / Москва
  • Like
Реакции: Archie's

Archie's

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

Ga_rY

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

Maestro Sound

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

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

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

Вложения

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

huligan1981

Active Member
26 Май 2017
420
49
28
42
Друзья, увидел в Кубейсе 10 возможность из готовых аккордов составлять гармонию, задался вопросом, как такое сделать в рипере.
Нашел Lokasenna_Theory Helper.lua :) Даже нашел ZD-complete-plus.reascale, чтобы работало. Но когда нажимаю в нем аккорды звука нет.
Подскажите, что нужно еще сделать, чтобы подбирать аккорды. Или может есть еще что-то, может скрипт или еще чего аналогичному как в кубе :oops:
 
25 Июл 2017
102
23
18
40
Добрый день. Такой вопрос - существует скрипт, который индексирует сенды по принципу нарастания. 1+2 to 1+2, 1+2 to 3+4, 1+2 to 5+6, 1+2 to 7+8. Этот скрипт написал Михаил Пилявский. Вот он:
function main(tr)
if not tr then return end
for sendidx = 1, reaper.GetTrackNumSends( tr, 0 ) do
local dest = 2^(sendidx-1)
if dest == 1 then dest = 0 end
reaper.SetTrackSendInfo_Value( tr, 0, sendidx-1, 'I_DSTCHAN', dest )
end
end

for i = 1, reaper.CountSelectedTracks(0) do main(reaper.GetSelectedTrack(0,i-1)) end

Можно ли переписать этот скрипт так, чтоб первый сенд был 1+2 to 3+4? (А не 1+2 to 1+2)
 

CerberPic

Member
17 Фев 2017
70
22
8
35
@@Michael, в Reaper 6 перестал работать скрипт mpl_Link TCP MCP folder collapsed state (running in background). Не могли бы Вы поправить его?
 

shuco

Active Member
26 Ноя 2005
439
109
43
58
Новосибирск
@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 ....
@borisuperful, удобная штука... с окном для ввода! А можно его допилить, что бы питчил только выделенные айтем(ы)?
 
Последнее редактирование:
  • Like
Реакции: zybex00

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