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

Тема в разделе "Cockos Reaper", создана пользователем drzhnn, 21 апр 2014.

  1. borisuperful

    borisuperful Well-Known Member

    Регистрация:
    31 янв 2013
    Сообщения:
    1.297
    Симпатии:
    462
    @Ga_rY, напишу сегодня
     
  2. Maestro Sound

    Maestro Sound Active Member

    Регистрация:
    1 ноя 2007
    Сообщения:
    577
    Симпатии:
    63
    А как же барабасы? Если они в миди то их трогать нельзяяяяя!
     
  3. Slick

    Slick IDDQD

    Регистрация:
    13 май 2008
    Сообщения:
    1.986
    Симпатии:
    902
    Род занятий:
    Аранжировщик, Саунд Дизайнер
    Адрес:
    Москва, Апрелевка
    @Ga_rY, выделить необходимое. Shift+9, shift+0. Так же и аудио.
     
    Archchie и Furqat нравится это.
  4. SERGEYKA

    SERGEYKA Active Member

    Регистрация:
    12 окт 2010
    Сообщения:
    376
    Симпатии:
    107
    Пол:
    Мужской
    Адрес:
    Иркутск
  5. Ga_rY

    Ga_rY Мучитель-синтезаторов

    Регистрация:
    2 янв 2008
    Сообщения:
    1.294
    Симпатии:
    770
    Пол:
    Мужской
    Род занятий:
    Инженер-электронщик
    Адрес:
    Полтава, UA
    @Maestro Sound, для ударных в минусовках использую подходящие петли, временно их хватает.
    Можно конечно как говорит Slick миди выделять руками, обходя вавки но это не очень удобно.
    В идеале было бы иметь два скрипта один из которых выделяет все миди и двигает на полтона вверх, другой тоже самое, но на полтона вниз.
     
  6. Archchie

    Archchie Well-Known Member

    Регистрация:
    24 окт 2017
    Сообщения:
    648
    Симпатии:
    365
    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
     
    Ga_rY нравится это.
  7. Slick

    Slick IDDQD

    Регистрация:
    13 май 2008
    Сообщения:
    1.986
    Симпатии:
    902
    Род занятий:
    Аранжировщик, Саунд Дизайнер
    Адрес:
    Москва, Апрелевка
    почему обходя то? ) обходя материал, который не нуждается в изменении питча (эффекты, барабаны). но бывает куча материала в wav, который надо так же транспонировать.
     
  8. Vilia33

    Vilia33 Active Member

    Регистрация:
    8 ноя 2009
    Сообщения:
    372
    Симпатии:
    78
    Item properties: Pitch item up one semitone
    Item properties: Pitch item down one semitone
    Вот эти транспонируют и миди и аудио
     
  9. Ga_rY

    Ga_rY Мучитель-синтезаторов

    Регистрация:
    2 янв 2008
    Сообщения:
    1.294
    Симпатии:
    770
    Пол:
    Мужской
    Род занятий:
    Инженер-электронщик
    Адрес:
    Полтава, UA
    @Archchie, спасибо огроменное, это то что надо.
    @Slick, согласен, все правильно у Вас более широкий вариант, но вот именно в моем узком случае нужно менять тональность только миди.
     
  10. borisuperful

    borisuperful Well-Known Member

    Регистрация:
    31 янв 2013
    Сообщения:
    1.297
    Симпатии:
    462
    @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
    
     
    Последнее редактирование: 22 дек 2018
  11. Ga_rY

    Ga_rY Мучитель-синтезаторов

    Регистрация:
    2 янв 2008
    Сообщения:
    1.294
    Симпатии:
    770
    Пол:
    Мужской
    Род занятий:
    Инженер-электронщик
    Адрес:
    Полтава, UA
    @borisuperful, это я тоже попробую. В смысле имеется в виду что будут двигаться сами изображения нот в айтеме да?
     
  12. borisuperful

    borisuperful Well-Known Member

    Регистрация:
    31 янв 2013
    Сообщения:
    1.297
    Симпатии:
    462
    @Ga_rY, да, именно так. То есть на уровне источника. Еще он с окном где вводишь сколько полутонов
     
  13. Ga_rY

    Ga_rY Мучитель-синтезаторов

    Регистрация:
    2 янв 2008
    Сообщения:
    1.294
    Симпатии:
    770
    Пол:
    Мужской
    Род занятий:
    Инженер-электронщик
    Адрес:
    Полтава, UA
    @borisuperful, сейчас попробовал этот скрипт который постом выше.
    Получается следующий глюк: когда вводишь значения 1-2 вроде все нормально, а когда 3 и больше, начинается микроглюки в партии.
    Первый скриншот до, второй после того как подняли на 3.
     

    Вложения:

  14. borisuperful

    borisuperful Well-Known Member

    Регистрация:
    31 янв 2013
    Сообщения:
    1.297
    Симпатии:
    462
    @Ga_rY, наверное бажит API. Это будет еще и по разному на разных нотах
    З.Ы, Кажется причина в привязке к сетке
     
  15. Ga_rY

    Ga_rY Мучитель-синтезаторов

    Регистрация:
    2 янв 2008
    Сообщения:
    1.294
    Симпатии:
    770
    Пол:
    Мужской
    Род занятий:
    Инженер-электронщик
    Адрес:
    Полтава, UA
    Если что, вот этот миди в архиве
     

    Вложения:

    • kuplet intro.rar
      Размер файла:
      447 байт
      Просмотров:
      1
  16. Archchie

    Archchie Well-Known Member

    Регистрация:
    24 окт 2017
    Сообщения:
    648
    Симпатии:
    365
    @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)
    -------------------------------------------------------------------------------------------------
    Нет, это не апи бажит.
    Во первых при удалении и при перемещении надо тщательно продумывать циклы, так как меняется порядок перемещаемого или удаляемого, а в нотах еще и нет своего собственного идентификатора и нумерация происходит по нумерации.
    То есть пример на четырех нотах: Когда цикл от одного до кол-во нот (ноты стоят в одной позиции и от квантованы, а это означает, что первая нота- это нижняя, а последняя верхняя),так вот, если перемещение происходит в верх, то вот что произойдет, когда переместится первая нота в верх, то тут же вторая нота превратится в первую, а при второй итерации надо получить вторую ноту и тут мы и получим вторую ноту, тем самым мы пропустили уже одну ноту "первую, которая должна и быть второй" и т.д., а если перемещение происходит в низ, то все в порядке будет, за исключением одного "но*"
    То есть на будущее, когда удаляешь или перемещаешь, надо делать цикл в соответствующем направлении. В данном случае например делается, если перемещаешь ноты в верх, то цикл должен быть от кол-во нот до нуля, а если перемещаешь в низ, то цикл должен быть от нуля до кол-во нот. То есть надо делать два цикла.
    ------
    * Когда несколько нот стоят в одном положении и от квантованные (чего некогда не бывает), то все сработает правильно, при циклах которые я описал выше, а если ноты сдвинуты хоть на пол микрона(чего ты при максимальном зуме не увидишь), то тут уже начнутся глюки, так как скрипт уже начнет перебирать ноты не по порядку, "то есть по порядку - но по временному, которого мы не видим".
    Что бы получать точно ноты, надо всегда заморачиваться с квантайзом, а для понимания - если ты мышкой потрогал ноту, то она тут же становится не от квантованной, хоть и даже привязана к сетке
     
    Ga_rY и borisuperful нравится это.
  17. borisuperful

    borisuperful Well-Known Member

    Регистрация:
    31 янв 2013
    Сообщения:
    1.297
    Симпатии:
    462
    @Archchie, я понял, просто не было еще времени задуматься :) Я предполагал, что можно было поиграть с циклами инкремент/декремент
     
    Archchie нравится это.
  18. Archchie

    Archchie Well-Known Member

    Регистрация:
    24 окт 2017
    Сообщения:
    648
    Симпатии:
    365
    @borisuperful, И вот так вроде бы нельзя делать, когда цикл в цикле и все счетчики одинаковые
    upload_2018-12-24_3-5-32.png
     
    Последнее редактирование: 23 дек 2018
    borisuperful нравится это.
  19. @Michael

    @Michael Well-Known Member

    Регистрация:
    14 дек 2010
    Сообщения:
    890
    Симпатии:
    1.342
    Пол:
    Мужской
    Адрес:
    Орёл / Москва
    А лучше напрямую изменять MIDI, например как в mpl_Adjust selected notes pitch (mousewheel).lua
     
    Archchie нравится это.
  20. Archchie

    Archchie Well-Known Member

    Регистрация:
    24 окт 2017
    Сообщения:
    648
    Симпатии:
    365
    @@Michael, Сегодня кстати натыкался вот на эту функцию "MIDI_GetAllEvts", но так и не вкурил, что она делает.
     
  21. @Michael

    @Michael Well-Known Member

    Регистрация:
    14 дек 2010
    Сообщения:
    890
    Симпатии:
    1.342
    Пол:
    Мужской
    Адрес:
    Орёл / Москва
    Выдаёт текстом все MIDI события тейка.
     
    Последнее редактирование: 23 дек 2018
  22. Ga_rY

    Ga_rY Мучитель-синтезаторов

    Регистрация:
    2 янв 2008
    Сообщения:
    1.294
    Симпатии:
    770
    Пол:
    Мужской
    Род занятий:
    Инженер-электронщик
    Адрес:
    Полтава, UA
    Ну вообще шикарно! Вы молодцы. Теперь подогнать тональность под голосовой диапазон стало на раз-два.
    @Archchie, отдельное спасибо еще раз.
     

Поделиться этой страницей