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

saddy13

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

Вложения

PianoIst

Well-Known Member
19 Май 2010
4.091
4.142
113
29
Kirchberg, kreis Zwickau
soundcloud.com
@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

Active Member
@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.
 

Вложения

Последнее редактирование:

saddy13

Active Member
Проделал тот же фокус в Panoteq в standalone версии. Включил запись, сыграл ту же самую репетицию - все записывается корректно. Экспортировал миди в Рипер. Результат на рисунке. Получается проблема только в Рипере.
 

Вложения

saddy13

Active Member

Вложения

saddy13

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

Вложения

saddy13

Active Member
Вопрос решён) Все оказалось гораздо проще. Нужно было переключить режим записи с "overdub" на "replace". Почему то overdub вот так странно записывает миди. У меня он по умолчанию стоит, поэтому и не получалось репетицию записать.
 

Вложения

  • Like
Реакции: Kokarev Maxim и PianoIst

PianoIst

Well-Known Member
19 Май 2010
4.091
4.142
113
29
Kirchberg, kreis Zwickau
soundcloud.com
Тут наверное проблема не в том, что сигнал "note off" не приходит, а в том, что Рипер зачем то считает это ошибкой, и переписывает репетицию в одну ноту.
В том и проблема, что note-on у него должно быть много, и note-off только одна, что для него и является некорректным поведением.
По идее плагин должен эту проблему решать, но видно где-то я слажал. Можно было бы сгенерировать нечто с таким MIDI как (как я понял, идёт с клавиатуры), но что-то лениво...
 
  • Like
Реакции: saddy13

saddy13

Active Member
В том и проблема, что note-on у него должно быть много, и note-off только одна, что для него и является некорректным поведением.
По идее плагин должен эту проблему решать, но видно где-то я слажал. Можно было бы сгенерировать нечто с таким MIDI как (как я понял, идёт с клавиатуры), но что-то лениво...
Спасибо огромное за помощь! Но я сам виноват, тупанул) когда то давно выставил запись миди по умолчанию на overdub, a Reaper в этом режиме почему-то вот так странно работает. Переключил на replace, все записывается корректно. Так что вопрос решён))
 

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