// Import MIDI from REX eel script by Diggidon
// Big thanx to @Michael!
Undo_BeginBlock(); // начало блока undo
PreventUIRefresh(1); // замораживаем GUI
// подготовка
Main_OnCommand(40033, 0); // разгрупировать айтемы
Main_OnCommand(NamedCommandLookup("_BR_SAVE_CURSOR_POS_SLOT_1"), 0); // сохранить позицию курсора, слот 1
Main_OnCommand(NamedCommandLookup("_SWS_SAVEALLSELITEMS1"), 0); // сохранить выделенные айтемы
Main_OnCommand(NamedCommandLookup("_SWS_SELTRKWITEM"), 0); // выделить треки с выделенными айтемами
Main_OnCommand(40001, 0); // добавить новый трек
Main_OnCommand(40118, 0); // сдвинуть айтемы на следующий трек
// привязываем айтемы к началу такта
Main_OnCommand(NamedCommandLookup("_XENAKIOS_SELFIRSTITEMSOFTRACKS"), 0); // выбрать первый айтем в выделенном треке
Main_OnCommand(41173, 0); // передвинуть курсор в начало выделенного айтема
Main_OnCommand(NamedCommandLookup("_BR_SAVE_CURSOR_POS_SLOT_2"), 0); // сохранить позицию курсора, слот 2
Main_OnCommand(40838, 0); // передвинуть курсор в начало текущего такта
Main_OnCommand(NamedCommandLookup("_SWS_RESTALLSELITEMS1"), 0); // вызвать сохранённые айтемы
Main_OnCommand(40699, 0); // скопировать и удалить айтемы
Main_OnCommand(NamedCommandLookup("_SWS_AWPASTE"), 0); // вставить айтемы
// лечим длительность последней ноты
Main_OnCommand(NamedCommandLookup("_XENAK_SPRDITOVERNEWTX"), 0); // explode items to new tracks (keeping position)
Main_OnCommand(NamedCommandLookup("_SWS_SELTRKWITEM"), 0); // выделить треки с выделенными айтемами
Main_OnCommand(NamedCommandLookup("_SWS_SAVESEL"), 0); // сохранить выделенные треки
Main_OnCommand(NamedCommandLookup("_XENAKIOS_SELLASTOFSELTRAX"), 0); // выделить последний из выделенных треков
Main_OnCommand(NamedCommandLookup("_XENAKIOS_SELPREVTRACK"), 0); // выделить предыдущий трек
Main_OnCommand(NamedCommandLookup("_XENAKIOS_SELFIRSTITEMSOFTRACKS"), 0); // выделить первый айтем на выделенном треке
Main_OnCommand(41173, 0); // переместить курсор к началу айтема
Main_OnCommand(41040, 0); // переместить курсор к началу следующего такта
Main_OnCommand(NamedCommandLookup("_XENAKIOS_SELNEXTTRACK"), 0); // выделить следующий трек
Main_OnCommand(NamedCommandLookup("_XENAKIOS_SELFIRSTITEMSOFTRACKS"), 0); // выделить первый айтем на выделенном треке
Main_OnCommand(41311, 0); // отрезать правый край айтема по эдит-курсору
// лепим всё обратно в один трек
Main_OnCommand(NamedCommandLookup("_SWS_RESTALLSELITEMS1"), 0); // вызвать сохранённые айтемы
Main_OnCommand(40644, 0); // implode items across tracks to one track
Main_OnCommand(40117, 0); // сдвинуть айтемы на предыдущий трек
Main_OnCommand(NamedCommandLookup("_SWS_RESTORESEL"), 0); // вызвать сохранённые треки
Main_OnCommand(40005, 0); // удалить треки
// делаем миди-айтем
Main_OnCommand(NamedCommandLookup("_SWS_SELTRKWITEM"), 0); // выделить треки с выделенными айтемами
Main_OnCommand(NamedCommandLookup("_SWS_SAVESEL"), 0); // сохранить выделенные треки
Main_OnCommand(40773, 0); // сделать хроматический миди-айтем из аудио-айтема
Main_OnCommand(40006, 0); // удалить айтемы
// лечим длительность остальных нот
Main_OnCommand(NamedCommandLookup("_XENAKIOS_SELNEXTTRACK"), 0); // выделить следующий трек
Main_OnCommand(NamedCommandLookup("_XENAKIOS_SELFIRSTITEMSOFTRACKS"), 0); // выделить первый айтем на выделенном треке
Main_OnCommand(40153, 0); // включить миди-эдитор
MIDIEditor_LastFocused_OnCommand(40003, 0); // выделить там всё
MIDIEditor_LastFocused_OnCommand(40405, 0); // выставить окончание нот к началу следующих
MIDIEditor_LastFocused_OnCommand(2, 0); // закрыть миди-эдитор
// синхронизируем номера миди-нот и велосити с Батарейкой
Main_OnCommand(NamedCommandLookup("_FNG_MIDI_UP_OCT"), 0);
Main_OnCommand(NamedCommandLookup("_FNG_MIDI_UP_OCT"), 0);
Main_OnCommand(NamedCommandLookup("_FNG_MIDI_UP_OCT"), 0); // транспонировать содержимое миди-айтема на 3 октавы
Main_OnCommand(NamedCommandLookup("_FNG_MIDI_UP_VEL10"), 0);
Main_OnCommand(NamedCommandLookup("_FNG_MIDI_UP_VEL10"), 0);
Main_OnCommand(NamedCommandLookup("_FNG_MIDI_UP_VEL10"), 0);
Main_OnCommand(NamedCommandLookup("_FNG_MIDI_UP_VEL10"), 0);
Main_OnCommand(NamedCommandLookup("_FNG_MIDI_UP_VEL10"), 0);
Main_OnCommand(NamedCommandLookup("_FNG_MIDI_UP_VEL10"), 0);
Main_OnCommand(NamedCommandLookup("_FNG_MIDI_UP_VEL10"), 0);
Main_OnCommand(NamedCommandLookup("_FNG_MIDI_UP_VEL10"), 0);
Main_OnCommand(NamedCommandLookup("_FNG_MIDI_UP_VEL10"), 0);
Main_OnCommand(NamedCommandLookup("_FNG_MIDI_UP_VEL10"), 0); // увеличить velocity выделенных нот на 100
// возвращаемся на исходную позицию
Main_OnCommand(40117, 0); // сдвинуть айтемы на предыдущий трек
Main_OnCommand(40005, 0); // удалить треки
Main_OnCommand(NamedCommandLookup("_SWS_SELTRKWITEM"), 0); // выделить треки с выделенными айтемами
Main_OnCommand(NamedCommandLookup("_BR_RESTORE_CURSOR_POS_SLOT_2"), 0); // вызвать позицию курсора, слот 2
Main_OnCommand(40699, 0); // скопировать и удалить айтемы
Main_OnCommand(NamedCommandLookup("_SWS_AWPASTE"), 0); // вставить айтемы
Main_OnCommand(40117, 0); // сдвинуть айтемы на предыдущий трек
Main_OnCommand(40005, 0); // удалить треки
Main_OnCommand(NamedCommandLookup("_BR_RESTORE_CURSOR_POS_SLOT_1"), 0); // вызвать позицию курсора, слот 1
PreventUIRefresh(-1); // размораживаем GUI
Undo_EndBlock("Import MIDI from REX", 0); // конец блока undo