Проблема с записью миди-нот приёмом "двойная репетиция".

  • Автор темы Автор темы saddy13
  • Дата начала Дата начала

saddy13

Active Member
Друзья, я сегодня купил наверное одну из самых приближенных к фортепианной миди-клавиатуру Kawai VPC1. В клавиатуре есть функция escape и тройной сенсор, что позволяет играть очень быстрые повторения нот на одной клавише, быстрые трели и легатные повторы на одной ноте без педали. Схема работы трёх сенсоров в кавай на картинке. При игре никаких проблем. Но когда начинаешь записывать, Рипер ведёт себя как то странно. Играю допустим репетицией (не поднимая клавишу до конца при каждом нажатии) на одной клавише несколько нот, - звучит все правильно, но тут же ноты сами собой в редакторе пропадают, и вместо например 10 быстрых нот, получается одна длинная. Я так понимаю, Рипер не получая информацию с "sensor N 1" о том что "note off", считает эту череду из 10 нот ошибкой, и заменяет ее автоматически на одну ноту. Я понимаю, что вряд ли кто-то из вас с такими задачами и проблемами сталкивался. Но все же, может быть кто-нибудь подскажит мне, где можно настроить реакцию на миди-события в Рипере, чтобы все работало корректно. Ведь в режиме "игры" на инструменте и в контакте, и в UVI, и в Garritan CFX, все звучит как и должно звучать, проблема начинает проявляться только в фактически записанной миди-информации, то есть в том, как ее интерпретирует сам Рипер.
 

Вложения

  • IMG_20211212_215546.jpg
    IMG_20211212_215546.jpg
    65,8 KB · Просмотры: 90
@saddy13, судя по всему, правильно понимаете.
Думаю, тут спасёт только JSFX, который (надеюсь) решит эту проблему.
Надеюсь — потому что мне лень было писать генератор таких неполноценых MIDI, а нормальными средствами из REAPER такого не получить...
Вставлять, естественно, надо в input fx chain

JSX:
desc:adds note-offs whrn double-repetition sensor sends note-on

@init
taken = 10000;

@sample
while (midirecv(offset, msg1, msg2, msg3))(
    msg1 >= 0x80 && msg1 < 0x90?(
        taken[msg2] = 0;
    );
    msg1 >= 0x90 && msg1 < 0xa0?(
        taken[msg2] == 1?(
            midisend(offset-1, msg1-0x1, msg2, msg3);
        );
        taken[msg2] = 1;
    );
    midisend(offset, msg1, msg2, msg3);
);
 
  • Like
Реакции: saddy13
@saddy13, судя по всему, правильно понимаете.
Думаю, тут спасёт только JSFX, который (надеюсь) решит эту проблему.
Надеюсь — потому что мне лень было писать генератор таких неполноценых MIDI, а нормальными средствами из REAPER такого не получить...
Вставлять, естественно, надо в input fx chain

JSX:
desc:adds note-offs whrn double-repetition sensor sends note-on

@init
taken = 10000;

@sample
while (midirecv(offset, msg1, msg2, msg3))(
    msg1 >= 0x80 && msg1 < 0x90?(
        taken[msg2] = 0;
    );
    msg1 >= 0x90 && msg1 < 0xa0?(
        taken[msg2] == 1?(
            midisend(offset-1, msg1-0x1, msg2, msg3);
        );
        taken[msg2] = 1;
    );
    midisend(offset, msg1, msg2, msg3);
);
Спасибо огромное! Но почему-то не работает. Я может быть что-то неправильно сделал? Вставил ваш код в блокнот, поменял расширение на jsfx.
 

Вложения

  • VID_20211213_114107.mp4
    17,6 MB
  • VID_20211213_114515.mp4
    32 MB
Последнее редактирование:
Проделал тот же фокус в Panoteq в standalone версии. Включил запись, сыграл ту же самую репетицию - все записывается корректно. Экспортировал миди в Рипер. Результат на рисунке. Получается проблема только в Рипере.
 

Вложения

  • pianoteq.png
    pianoteq.png
    43,3 KB · Просмотры: 83

Вложения

  • VID_20211213_135245.mp4
    13,3 MB
Тут наверное проблема не в том, что сигнал "note off" не приходит, а в том, что Рипер зачем то считает это ошибкой, и переписывает репетицию в одну ноту.
Почему тот же Pianoteq все правильно считывает, и не додумывает за исполнителя, что он хотел сыграть, одну ноту или репетицию?))
Вот на картинке мидяха из Пианотека. Первая исходник. На второй я вытащил все нотки. Здесь видно что все ноты сыграны друг за другом, и обрываются в один момент, когда и получен сигнал "note off". Мне кажется, так и должно работать во всех хостах.
В Рипере зачем то видимо сделали этакую "защиту" от сигналов неисправных клавиатур, так что ли?))
 

Вложения

  • pianoteq midi.png
    pianoteq midi.png
    105,8 KB · Просмотры: 74
  • pianoteq midi2.png
    pianoteq midi2.png
    92,2 KB · Просмотры: 74
Вопрос решён) Все оказалось гораздо проще. Нужно было переключить режим записи с "overdub" на "replace". Почему то overdub вот так странно записывает миди. У меня он по умолчанию стоит, поэтому и не получалось репетицию записать.
 

Вложения

  • record mode.png
    record mode.png
    98,9 KB · Просмотры: 76
  • Like
Реакции: Kokarev Maxim и PianoIst
Тут наверное проблема не в том, что сигнал "note off" не приходит, а в том, что Рипер зачем то считает это ошибкой, и переписывает репетицию в одну ноту.
В том и проблема, что note-on у него должно быть много, и note-off только одна, что для него и является некорректным поведением.
По идее плагин должен эту проблему решать, но видно где-то я слажал. Можно было бы сгенерировать нечто с таким MIDI как (как я понял, идёт с клавиатуры), но что-то лениво...
 
  • Like
Реакции: saddy13
В том и проблема, что note-on у него должно быть много, и note-off только одна, что для него и является некорректным поведением.
По идее плагин должен эту проблему решать, но видно где-то я слажал. Можно было бы сгенерировать нечто с таким MIDI как (как я понял, идёт с клавиатуры), но что-то лениво...
Спасибо огромное за помощь! Но я сам виноват, тупанул) когда то давно выставил запись миди по умолчанию на overdub, a Reaper в этом режиме почему-то вот так странно работает. Переключил на replace, все записывается корректно. Так что вопрос решён))
 

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