Reaper: вопросы присматривающихся к этой программе

  • Автор темы Автор темы goa
  • Дата начала Дата начала
@BRG, В реапак закинул эти два скрипта.
Archie_MidiEditor; Activate next MIDI item - Select only this item - Set cursor to start items.lua
Archie_MidiEditor; Activate previous MIDI item - Select only this item - Set cursor to start items.lua
 
Ну код под спойлером. Куда это все и с чем едят))
 
Как объединить несколько миди-айтемов с нескольких дорожек в один айтем на одной? Именно чтобы один айтем получился, а не слои на одном треке.
 
@drumwizard,
А что если на миди айтемах есть эффекты, то как быть?
А если выделены и миди и аудио айтемы, то как быть?
А если выделены только аудио айтемы, то как быть?
 
Последнее редактирование:
@drumwizard,
А что если на миди айтемах есть эффекты, то как быть?
А если выделены и миди и аудио айтемы, то как быть?
Эффекты на миди-айтемах терять, либо применять к миди-событиям. Понимаю, что это сработает только для какого-нибудь арпеджиатора, дилея и динамической обработки велосити нот. Если выделены и миди, и аудио айтемы, ставить слоями. Ведь есть же в Рипере дифференциация миди и аудио айтемов.
 
Эффекты на миди-айтемах терять, либо применять к миди-событиям.
Эффекты применять к миди-событиям не получится, т.к. миди айтем с эффектами при склейке превратится в аудио. Получится только либо потерять все эффекты, т.е. новый айтем будет без эффектов, либо все эффекты скопировать на новый айтем (но тут как говорится получится каша из эффектов))). Как лучше?
Если выделены и миди, и аудио айтемы, ставить слоями.
Слоями на одном треке или создать второй трек под аудио? Или вообще новые треки не создавать?

Предыдущие айтемы уничтожить или нет?
 
@AlexLazer, Я как понял, ему нужно несколько миди айтемов объединить в один, а glue, если есть эффекты на миди айтеме превратит миди айтем в аудио.
 
  • Like
Реакции: AlexLazer
@BRG, В реапак закинул эти два скрипта.
Archie_MidiEditor; Activate next MIDI item - Select only this item - Set cursor to start items.lua
Archie_MidiEditor; Activate previous MIDI item - Select only this item - Set cursor to start items.lua
Спасибо тебе огромное. Действительно, то что нужно. Только, возможно View: Zoom to content немного по глазам бьет, если минимум нот в сетке.. слишком крупно, непривычно.
 
@drumwizard, Оно ?
123.gif


JavaScript:
    --=========================================
    local function MODULE(file);
        local E,A=pcall(dofile,file);if not(E)then;reaper.ShowConsoleMsg("\n\nError - "..debug.getinfo(1,'S').source:match('.*[/\\](.+)')..'\nMISSING FILE / ОТСУТСТВУЕТ ФАЙЛ!\n'..file:gsub('\\','/'))return;end;
        if not A.VersArcFun("2.9.0",file,'')then;A=nil;return;end;return A;
    end; local Arc = MODULE((reaper.GetResourcePath()..'/Scripts/Archie-ReaScripts/Functions/Arc_Function_lua.lua'):gsub('\\','/'));
    if not Arc then return end;
    local ArcFileIni = reaper.GetResourcePath():gsub('\\','/')..'/reaper-Archie.ini';
    --=========================================


    local CountSelItem = reaper.CountSelectedMediaItems(0);
    if CountSelItem == 0 then no_undo() return end;
   
   
    reaper.PreventUIRefresh(1);
    reaper.Undo_BeginBlock();
   
   
    ------------------------
    local _,st= Arc.Save_Selected_Items_Slot(1);
    local midiItem  = {};
    local audioItem = {};
    local AudioTrack,midiTrack;
   
    for i = 1,#st do;
        local take = reaper.GetActiveTake(st[i]);
        local midi = reaper.TakeIsMIDI(take);
        if midi then;
            if not midiTrack then;
                if AudioTrack then;
                    midiTrack = AudioTrack;
                else;
                    midiTrack = reaper.GetMediaItem_Track(st[i]);
                end;
                ----
                local numb = reaper.GetMediaTrackInfo_Value(midiTrack,'IP_TRACKNUMBER');
                reaper.InsertTrackAtIndex(numb-1,true);
                midiTrack = reaper.GetTrack(0,numb-1);
            end;
            local retval,str = reaper.GetItemStateChunk(st[i],'',false);
            ---
            str = str:gsub('BYPASS%s+%d+%s+%d+','BYPASS 1 1');
            ---
            local nItem = reaper.CreateNewMIDIItemInProj(midiTrack,0,1,false);
            reaper.SetItemStateChunk(nItem,str,false);
            midiItem[#midiItem+1] = nItem;
        else;
            if not AudioTrack then;
                if midiTrack then;
                    AudioTrack = midiTrack;
                else;
                    AudioTrack = reaper.GetMediaItem_Track(st[i]);
                end;
                ---
                local numb = reaper.GetMediaTrackInfo_Value(AudioTrack,'IP_TRACKNUMBER');
                reaper.InsertTrackAtIndex(numb-1,true);
                AudioTrack = reaper.GetTrack(0,numb-1);
            end;
            local retval,str = reaper.GetItemStateChunk(st[i],'',false);
            local nItem = reaper.CreateNewMIDIItemInProj(AudioTrack,0,1,false);
            reaper.SetItemStateChunk(nItem,str,false);
            audioItem[#audioItem+1] = nItem;
        end;
    end;
    --------------------------------
    reaper.SelectAllMediaItems(0,0);
    --------------------------------
   
    ---MIDI----------------
    for i = 1,#midiItem do;
        reaper.SetMediaItemInfo_Value(midiItem[i],'B_UISEL',1);
    end;
    reaper.Main_OnCommand(42353,0);--Items: Set all take FX offline for selected media items
    reaper.Main_OnCommand(40257,0);--Item: Glue items, ignoring time selection, including leading fade-in and trailing fade-out
    local NewMidiItem = reaper.GetSelectedMediaItem(0,0);
    -----------------------
   
    --------------------------------
    reaper.SelectAllMediaItems(0,0);
    --------------------------------
   
   
    ---AUDIO---------------
    for i = 1,#audioItem do;
        reaper.SetMediaItemInfo_Value(audioItem[i],'B_UISEL',1);
    end;
    reaper.Main_OnCommand(40257,0);--Item: Glue items, ignoring time selection, including leading fade-in and trailing fade-out
    local NewAudioItem = reaper.GetSelectedMediaItem(0,0);
    -----------------------
   
    reaper.SetMediaItemInfo_Value(NewMidiItem,'B_UISEL',1);
    reaper.SetMediaItemInfo_Value(NewAudioItem,'B_UISEL',1);
   
   
    reaper.Undo_EndBlock("---",-1);
    reaper.PreventUIRefresh(-1);

Спасибо тебе огромное.
Пожалуйста !
Только, возможно View: Zoom to content немного по глазам бьет, если минимум нот в сетке.. слишком крупно, непривычно.
Интересно :Dle42: , как он может по глазам бить, если он в скрипте отключен ?
Он в скрипте прописан, но строка закомментирована.
 
Последнее редактирование:
  • Like
Реакции: drumwizard и AlexLazer
Интересно :Dle42: , как он может по глазам бить, если он в скрипте отключен ?
Он в скрипте прописан, но строка закомментирована.
Все норм это я тут протупил чуток) Благодарю еще раз.
 
@BRG, Если не нужно что бы контент сдвигался, то закомментируй вот эту строку.
Открой скрипт и поставь два тире перед строкой. Сохрани ctrl+s.

123.gif
 
@drumwizard, Твоя ошибка говорит что ты плохо скопировал скрипт. Скопируй по новой и внимательно.
@Red Bull, твоя ошибка не знаю из за чего, завтра посмотрю, сейчас не за компом. Сделай гиф на новом проекте, что ты делаешь, что бы я смог повторить твою ошибку.
 
твоя ошибка не знаю из за чего, завтра посмотрю, сейчас не за компом. Сделай гиф на новом проекте, что ты делаешь, что бы я смог повторить твою ошибку.
Как то так...
 

Вложения

  • glue.gif
    glue.gif
    1,5 MB · Просмотры: 101
@Red Bull, Исправил. И закинул скрипт в репозиторий.
Archie_Item; Glue selected items to separate track - Midi in midi - Audio in audio.lua
 
  • Like
Реакции: AlexLazer
@Red Bull, Исправил. И закинул скрипт в репозиторий.
Archie_Item; Glue selected items to separate track - Midi in midi - Audio in audio.lua
В паре с аудио, корректно захватывает миди только с одного трека,если выделить еще (миди) на двух и более треках,то половина нот сбоит,причем в каком то своем порядке.
Так же и с миди без аудио,два трека и более,распад.
 

Вложения

  • glue 2.gif
    glue 2.gif
    1,6 MB · Просмотры: 83
должно быть, что в миди редакторе все ноты присутствуют.
Я не могу это повторить, скинь свои мидяшки, я попробую на них проверить.
Да это даже в пустом проекте.Не в мидяшках дело.
Кажется я понял в чем причина.Это работает,если айтемы расположены горизонтально на определенном отступе друг от друга(в том числе и на разных треках).
Если идут пачкой вертикально,то возможно глотаются те ноты которые совпадают по звукоряду.И теперь вопрос :
- А как скрипт поймет какую ноту мне нужно оставить в данный момент,восьмушку или шестнадцатую???
Так что сомневаюсь что в этом есть смысл...
 
Все - вроде понял в чем дело и дело вовсе не в скрипте, как мне кажется.
У тебя наверное включен экшен "Options: Correct overlapping notes while editing", это он и режет твои ноты. Отключи его и все ноты останутся на месте.
 
А как скрипт поймет какую ноту мне нужно оставить в данный момент
Как я выше уже написал, что тут дело скорее всего, вовсе не в скрипте, а в включенном экшене^ , так что пойми как он работает и поймешь что происходит и куда деваются ноты.
 

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