Некоторое время назад была приобретена MIDI-клавиатура Fatar Studiologic VMK188+. В основном с целью использования вместо цифрового фортепиано.
Довольно быстро обнаружен ряд недостатков, досадно влияющих на в принципе неплохое изделие.
Недостатки такие:
1)Датчики срабатывают не в нижнем положении клавиши, как это должно быть у фортепиано, а несколько раньше, на среднем участке траектории. Это ухудшает имитацию поведения акустического пианино, а также делает клавиши слегка "дубовыми".
2)Как выяснилось, клавиатура генерирует далеко не все возможные значения velocity, в ряду значений есть значительные пропуски. Примерно выглядит так: до 30 - все значения, дальше через одно, после 50 - через 2, потом через 3, около 127 - вообще пропускается по 5-7 значений.
3)Шумящие контроллеры, хаотически передающие лишние midi-сообщения.
Проще всего устраняется проблема 1. Все решается небольшой и быстрой механической модернизацией. Суть модернизации — небольшое опускание вниз клавиатурных датчиков с помощью дополнительных шайб. К сожалению не догадались сделать пошаговую фотосъемку в процессе переделки, но надеюсь, что словесное описание будет достаточно понятным. Тем более, что процедура очень простая.
1)Надо в любом хозяйственном или строительном магазине приобрести пакет обычных шайб толщиной 0.5мм (оптимально, 0.6 - уже много). Обычно это шайбы под M4, но лучше штангенциркулем измерить.
2)Ставим клавиатуру на два стула, чтобы был доступ к подбрюшью.
3)Разбираем клавиатуру, сначала сняв с корпуса боковушки (прикручены саморезами с головкой под звездочку) и открываем крышку.
4)Далее снизу откручиваем 7 винтов (они довольно большие), удерживающих клавиатурный блок в корпусе.
5)Отключаем разъемы клавиатурного блока от маленькой платы контроллера (два красненьких разъемчика micromatch).
6)Аккуратно вынимаем клавиатурный блок. Держать блок желательно за раму и аккуратно: он тяжелый и без корпуса ощущается не очень жестким.
7)Кладем клавиатурный блок клавишами вниз, но не на клавиши, а лучше рамой на две параллельные доски так, чтобы клавиши между ними свободно провисали.
8)Откручиваем все крепежные винты у длинных печатных плат, распложенных на клавиатурном блоке снизу. Собственно, именно на этих платах и припаяны клавиатурные датчики (резинки). Нужно открутить сами платы и крепежные железки, которые там прикручены для общей жесткости конструкции.
9)Кладем шайбы под плату во все места, где плата привинчивается
10)Укладываем плату сверху (следим, чтобы шайбы не смещались).
11)Где надо, возвращаем на место железки. Закручиваем винты.
12)Там, где железка прикручивается не поверх платы, а непосредственно к раме, тоже подкладываем шайбы, чтобы все было параллельно и железки не перекашивало.
13)Ставим клавиатуру в корпус, подключаем разъемы, прикручиваем винты на брюхе, все собираем назад.
На всю процедуру уходит максимум час.
Проблема 2 оказалась значительно сложнее.
Как выяснилось, причина пропуска значений - слишком низкая тактовая частота опроса датчиков клавиатуры. Время между срабатыванием первого и второго датчиков измеряется со слишком грубым шагом и не позволяет с достаточной точностью вычислить скорость движения клавиши, особенно, при игре форте, когда клавиша движется с большой скоростью.
Довольно быстро стало понятно, что исправить проблему можно, только поменяв электронную начинку. Сначала хотели просто заменить микроконтроллер PIC на совместимый, но более быстрый. Поскольку внутреннюю программу все равно пришлось бы переписывать, в итоге решили пойти по более радикальному пути: использовать совершенно другой современный микроконтроллер с совершенно другой архитектурой. Был выбран мощный и популярный чип STM32F407VG.
Сразу решили все проектировать так, чтобы не было разрушающих изменений в заводской конструкции клавиатуры, т. е. чтобы было можно было без проблем все собрать назад как было если возникнет такое желание.
Начали разработку с попытки использовать готовую отладочную плату STM32F4 Discovery, и довольно долго с ней провозились. Данная плата работала, оказалась не совсем пригодной для управления клавиатурой, т.к. на этой плате помимо самого микроконтроллера распаяны разнообразные дополнительные устройства: звуковой чип, акселерометр и т.д., которые подсоединены к напрямую к портам ввода-вывода контроллера и в ряде случаев мешают считывать данные с клавиатурной матрицы. В конечном счете просто разработали свою собственную оригинальную плату с таким же микроконтроллером на борту.
На первом фото видно, как плата ставится и подключается внутри .
На втором снимке — плата более крупно.
Схема вся своя, разводка тоже, а вот изготавливали платы на заводе в Китае . Паяли сами.
Как можно видеть на снимке, новая плата ставится на место маленькой платы клавиатурного контроллера, и родными разъемами подключается к клавиатурному блоку.
Основная большая заводская плата со всякими движками-крутилками остается без изменения, но из нее вынимается микроконтроллер PIC (он там не припаян, а в панельке) , а вместо него в панельку ставляется разъем, который шлейфом (шлейф виден на фото) тоже подключается к новой плате. В заводском варианте в клавиатуре стояли два микроконтроллера PIC: один отвечал за опрос клавиатуры, второй - за все остальное. В новом варианте STM32F4 работает за оба старых микроконтроллера: он настолько быстрее (производительность отличается почти на два порядка), что легко все успевает.
Небольшая заводская плата с контроллером USB тоже убирается, вместо нее ставится такого же размера плата просто с таким же квадратным USB - разъемом, подключенным к USB-разъему на новой плате: на фото общего вида она видна справа внизу. Отдельный контроллер USB теперь тоже не требуется, поскольку STM32 и с USB тоже работает сам. Внутренние USB-соединения видны на фото, применен стандартный мини-USB кабель.
Для записи пресетов и разных настроек решили применить micro-SD карточку. Она видна на новой плате с правой стороны.
Всю прошивку написали сами и сделали там все что захотели, поскольку свобода была ничем не ограничена. Новые возможности тепрь такие:
- Можно нормально играть без пропусков velocity. Это важно и заметно по ощущениям от игры.
- Полностью поддерживается Hi-Res velocity. Это расширение MIDI-стандарта, позволяющее передавать не 128 уровней velocity, а значительно больше. Правда из того что знаю, понимает это только фортепианная программа Pianoteq.
- Передается note off velocity, т. е. информация о том, с какой скоростью клавишу отпускают.
- Есть возможность редактировать передаточные кривые клавиатуры, причем плавно.
- Сделали сплит, которого в заводском варианте не было
- Решена проблема 3 - шумы от контроллеров. На столько на сколько это было возможно. К сожалению там применены обычные переменные резисторы, которые изрядно шумят и ловят наводки. Улучшить ситуацию удалось только путем применения достаточно громоздких алгоритмов цифровой фильтрации.
- Все контроллеры теперь можно калибровать. Скажем, можно четко настроить любую подключенную педаль, чтобы значения между полностью отжатой педалью и полностью нажатой были ровно в диапазоне 0-127.
- Сделана запись на SD-карточку пресетов, кривых, калибровок слайдеров/педалей/крутилок, причем запись в текстовом виде в популярном формате JSON, который при желании легко отредактировать руками, вставив карточку в компьютер.
- Общее управление теперь сделано в виде более интуитивного многоуровневого меню.
К сожалению многие желания не были реализованы из-за убогости примененного в данном инструменте двухстрочного алфавитно-цифрового дисплея hd44780. Можно было бы поменять его какой-нибудь красивый графический, но дисплея с подходящим форм-фактором не нашли. А деструктивных изменений корпуса делать не хотели.
Если у кого-то данное сообщение вызовет интерес и кто-то захочет повторить конструкцию, то будут изложены все дальнейшие подробности.
Проект абсолютно некоммерческий. Если кто захочет все повторить полностью самостоятельно, то сможет получить всю информацию об изготовлении платы, а также прошивку. Прошивку пока следует считать альфа-версией, она будет еще дорабатываться. Надеемся, что добавим новые функции, в частности управление устройством с компьютера.
Готовы ответить на все вопросы.
Довольно быстро обнаружен ряд недостатков, досадно влияющих на в принципе неплохое изделие.
Недостатки такие:
1)Датчики срабатывают не в нижнем положении клавиши, как это должно быть у фортепиано, а несколько раньше, на среднем участке траектории. Это ухудшает имитацию поведения акустического пианино, а также делает клавиши слегка "дубовыми".
2)Как выяснилось, клавиатура генерирует далеко не все возможные значения velocity, в ряду значений есть значительные пропуски. Примерно выглядит так: до 30 - все значения, дальше через одно, после 50 - через 2, потом через 3, около 127 - вообще пропускается по 5-7 значений.
3)Шумящие контроллеры, хаотически передающие лишние midi-сообщения.
Проще всего устраняется проблема 1. Все решается небольшой и быстрой механической модернизацией. Суть модернизации — небольшое опускание вниз клавиатурных датчиков с помощью дополнительных шайб. К сожалению не догадались сделать пошаговую фотосъемку в процессе переделки, но надеюсь, что словесное описание будет достаточно понятным. Тем более, что процедура очень простая.
1)Надо в любом хозяйственном или строительном магазине приобрести пакет обычных шайб толщиной 0.5мм (оптимально, 0.6 - уже много). Обычно это шайбы под M4, но лучше штангенциркулем измерить.
2)Ставим клавиатуру на два стула, чтобы был доступ к подбрюшью.
3)Разбираем клавиатуру, сначала сняв с корпуса боковушки (прикручены саморезами с головкой под звездочку) и открываем крышку.
4)Далее снизу откручиваем 7 винтов (они довольно большие), удерживающих клавиатурный блок в корпусе.
5)Отключаем разъемы клавиатурного блока от маленькой платы контроллера (два красненьких разъемчика micromatch).
6)Аккуратно вынимаем клавиатурный блок. Держать блок желательно за раму и аккуратно: он тяжелый и без корпуса ощущается не очень жестким.
7)Кладем клавиатурный блок клавишами вниз, но не на клавиши, а лучше рамой на две параллельные доски так, чтобы клавиши между ними свободно провисали.
8)Откручиваем все крепежные винты у длинных печатных плат, распложенных на клавиатурном блоке снизу. Собственно, именно на этих платах и припаяны клавиатурные датчики (резинки). Нужно открутить сами платы и крепежные железки, которые там прикручены для общей жесткости конструкции.
9)Кладем шайбы под плату во все места, где плата привинчивается
10)Укладываем плату сверху (следим, чтобы шайбы не смещались).
11)Где надо, возвращаем на место железки. Закручиваем винты.
12)Там, где железка прикручивается не поверх платы, а непосредственно к раме, тоже подкладываем шайбы, чтобы все было параллельно и железки не перекашивало.
13)Ставим клавиатуру в корпус, подключаем разъемы, прикручиваем винты на брюхе, все собираем назад.
На всю процедуру уходит максимум час.
Проблема 2 оказалась значительно сложнее.
Как выяснилось, причина пропуска значений - слишком низкая тактовая частота опроса датчиков клавиатуры. Время между срабатыванием первого и второго датчиков измеряется со слишком грубым шагом и не позволяет с достаточной точностью вычислить скорость движения клавиши, особенно, при игре форте, когда клавиша движется с большой скоростью.
Довольно быстро стало понятно, что исправить проблему можно, только поменяв электронную начинку. Сначала хотели просто заменить микроконтроллер PIC на совместимый, но более быстрый. Поскольку внутреннюю программу все равно пришлось бы переписывать, в итоге решили пойти по более радикальному пути: использовать совершенно другой современный микроконтроллер с совершенно другой архитектурой. Был выбран мощный и популярный чип STM32F407VG.
Сразу решили все проектировать так, чтобы не было разрушающих изменений в заводской конструкции клавиатуры, т. е. чтобы было можно было без проблем все собрать назад как было если возникнет такое желание.
Начали разработку с попытки использовать готовую отладочную плату STM32F4 Discovery, и довольно долго с ней провозились. Данная плата работала, оказалась не совсем пригодной для управления клавиатурой, т.к. на этой плате помимо самого микроконтроллера распаяны разнообразные дополнительные устройства: звуковой чип, акселерометр и т.д., которые подсоединены к напрямую к портам ввода-вывода контроллера и в ряде случаев мешают считывать данные с клавиатурной матрицы. В конечном счете просто разработали свою собственную оригинальную плату с таким же микроконтроллером на борту.
На первом фото видно, как плата ставится и подключается внутри .
На втором снимке — плата более крупно.
Схема вся своя, разводка тоже, а вот изготавливали платы на заводе в Китае . Паяли сами.
Как можно видеть на снимке, новая плата ставится на место маленькой платы клавиатурного контроллера, и родными разъемами подключается к клавиатурному блоку.
Основная большая заводская плата со всякими движками-крутилками остается без изменения, но из нее вынимается микроконтроллер PIC (он там не припаян, а в панельке) , а вместо него в панельку ставляется разъем, который шлейфом (шлейф виден на фото) тоже подключается к новой плате. В заводском варианте в клавиатуре стояли два микроконтроллера PIC: один отвечал за опрос клавиатуры, второй - за все остальное. В новом варианте STM32F4 работает за оба старых микроконтроллера: он настолько быстрее (производительность отличается почти на два порядка), что легко все успевает.
Небольшая заводская плата с контроллером USB тоже убирается, вместо нее ставится такого же размера плата просто с таким же квадратным USB - разъемом, подключенным к USB-разъему на новой плате: на фото общего вида она видна справа внизу. Отдельный контроллер USB теперь тоже не требуется, поскольку STM32 и с USB тоже работает сам. Внутренние USB-соединения видны на фото, применен стандартный мини-USB кабель.
Для записи пресетов и разных настроек решили применить micro-SD карточку. Она видна на новой плате с правой стороны.
Всю прошивку написали сами и сделали там все что захотели, поскольку свобода была ничем не ограничена. Новые возможности тепрь такие:
- Можно нормально играть без пропусков velocity. Это важно и заметно по ощущениям от игры.
- Полностью поддерживается Hi-Res velocity. Это расширение MIDI-стандарта, позволяющее передавать не 128 уровней velocity, а значительно больше. Правда из того что знаю, понимает это только фортепианная программа Pianoteq.
- Передается note off velocity, т. е. информация о том, с какой скоростью клавишу отпускают.
- Есть возможность редактировать передаточные кривые клавиатуры, причем плавно.
- Сделали сплит, которого в заводском варианте не было
- Решена проблема 3 - шумы от контроллеров. На столько на сколько это было возможно. К сожалению там применены обычные переменные резисторы, которые изрядно шумят и ловят наводки. Улучшить ситуацию удалось только путем применения достаточно громоздких алгоритмов цифровой фильтрации.
- Все контроллеры теперь можно калибровать. Скажем, можно четко настроить любую подключенную педаль, чтобы значения между полностью отжатой педалью и полностью нажатой были ровно в диапазоне 0-127.
- Сделана запись на SD-карточку пресетов, кривых, калибровок слайдеров/педалей/крутилок, причем запись в текстовом виде в популярном формате JSON, который при желании легко отредактировать руками, вставив карточку в компьютер.
- Общее управление теперь сделано в виде более интуитивного многоуровневого меню.
К сожалению многие желания не были реализованы из-за убогости примененного в данном инструменте двухстрочного алфавитно-цифрового дисплея hd44780. Можно было бы поменять его какой-нибудь красивый графический, но дисплея с подходящим форм-фактором не нашли. А деструктивных изменений корпуса делать не хотели.
Если у кого-то данное сообщение вызовет интерес и кто-то захочет повторить конструкцию, то будут изложены все дальнейшие подробности.
Проект абсолютно некоммерческий. Если кто захочет все повторить полностью самостоятельно, то сможет получить всю информацию об изготовлении платы, а также прошивку. Прошивку пока следует считать альфа-версией, она будет еще дорабатываться. Надеемся, что добавим новые функции, в частности управление устройством с компьютера.
Готовы ответить на все вопросы.