/dev/AlphaSierra
رفتن به کانال در Telegram
Заметки про клавиатуры и прочее. Канал с красивыми картинками @kbdAE
نمایش بیشتر608
مشترکین
اطلاعاتی وجود ندارد24 ساعت
+17 روز
+130 روز
آرشیو پست ها
Проект Omsk: FM синтез
До недавнего времени я очень скептически относился к FM-синтезу, то есть я понимал, как он работает, но он мне казался очень ограниченным, потому как в отличие от модульного аддитивного синтезатора, в котором, конечно, есть и AM, и FM, и RM модуляции, ограничивать себя только одной модуляцией, еще и всего с 32 патчами, казалось довольно глупо, при том что на выходе звук все равно получается что-то между колокольчиками и струнными.
В защиту FM-синтезаторов, конечно, надо сказать, что вокруг Yamaha DX7 действительно очень большое комьюнити, и если выбирать среди самых влиятельных синтезаторов одну модель (не производителя, а именно модель), DX7 будет на лидирующих позициях. И это заметно даже при работе над синтезатором: есть документация о том, как устроены программы и картриджи DX7, есть прекрасные открытые софтовые эмуляторы, с которыми удобно сравнивать звучание. Не могу сказать, что я проникся FM-синтезом, но точно стал менее скептичным.
Про саму прошивку не знаю что сказать: есть возможность импортировать пресеты по MIDI, можно крутить патчи прямо на синтезаторе, интерфейс аналогичен прошивке с аддитивным синтезом. Добавлен тот же секвенсор, арпеджиатор, и все, что можно было перенести из аддитивной прошивки, было перенесено. Сейчас, по сути, все прошивки максимально приводятся к единой кодовой базе. Впереди еще гигантское количество работы с документацией. Одно дело — написать инструкцию по сборке, другое дело — писать полноценный юзер-гайд по нескольким прошивкам сразу. Работы над корпусом для Омска еще ведутся.
Если вас заинтересовал Омск, вы знаете, что делать
#Omsk
+1
Наброски 31: M-Vave FM-1
Компания M-Vave, которая в основном известна бюджетными МИДИ контроллерами выпустила своей первый мини синтезатор. Справедливости ради, в их старших миди контроллерах (SMK-37 Pro) уже был простенький режим синтезатора и вот теперь полноценный синтезатор. В отличии от всего того что делает в таком размере KORG, Rolland и behringer у него стоит полноценный цветной экран, есть нескольцо цветовых решений корпуса, есть bt и все это по цене в 4 раза меньше.
Но самое интересно это то что внутри используется чип JieLi AC791N. У него 2 ядра по 320МГц, 587 кб ОЗУ, есть wifi и bt и даже какая-то документация есть. В теории ничего не мешает сделать свою открытую прошивку для этого чип, а даже если чип залочен, можно сделать плату со своим микроконтроллером и это все еще дешевле других мини синтезаторов. Благодаря большому дисплею можно сделать нормальную навигацию по меню
#Наброски
#FM1
Проект Omsk: Прошивки готовы
Сейчас доступно 4 прошивки: DMK, omsk_midi, omsk_wave, omsk_grain. Про возможности DMK написано буквально в предыдущем посте. omsk_midi — это простая демка, превращающая Омск в миди-контроллер. Оставшиеся 2 прошивки уже намного интереснее: omsk_wave — это полноценный многоголосый уэйвтейбл-синтезатор с возможностью роутинга модуляции и фильтров. А omsk_grain — это гранулярный синтезатор с 4 голосами, всё с теми же возможностями по роутингу модуляции и управлению по миди. У обоих прошивок есть возможность управлять любым параметром по миди, есть возможность загружать пресеты в энергонезависимую память.
Предвидя вопросы, сразу скажу, что объединить эти прошивки в одну невозможно. В одной место в ПЗУ тратится на хранение семплов, а в omsk_wave место тратится на хранение LUT-таблиц для фильтров, wavetable и прочих констант. Сейчас прошивки насколько это возможно унифицированы между собой, все общие фрагменты вытащены в библиотеку, но из-за некоторых архитектурных особенностей различается реализация вывода звука, огибающих и модуляторов, поэтому это всё еще довольно разные прошивки. В ближайших планах — сделать веб-конфигуратор, чтобы крутить параметры, выгружать и загружать пресеты из браузера.
Теоретически прошивка собирается и на rp2040, omsk_grain (правда, в два раза меньше количеством семплов, потому что памяти на rp2040 zero в два раза меньше), однако насколько оно работоспособно — вопрос открытый. С прошивкой omsk_wave сложнее. Потому что сейчас она не влезает в память rp2040 zero, и я, честно, не уверен, что с этим можно сделать. Можно считать некоторые параметры на лету вместо того, чтобы смотреть в таблицу, но rp2040 медленнее, чем rp2350, поэтому шансы, что оно будет адекватно работать, довольно призрачные. Можно портировать pra32 прошивку nizkotono, она, конечно, значительно проще, но зато она оптимизирована под рп2040 и без проблем влезает в 2мб.
#Omsk
DMK #9 MIDI
В QMK/VIAL есть поддержка MIDI, проблема в том, что она довольно ограниченная: можно слать MIDI-ноты, можно слать десяток MIDI-команд, на этом всё. Даже назначить MIDI CC на энкодер адекватно нельзя. Честно говоря, не уверен, зачем вообще MIDI нужно в таком виде. В DMK же реализовано всё куда более полноценно. Есть MIDI TOGGLE, можно слать абсолютные или относительные значения с помощью энкодера, можно назначить на нажатие посыл MIDI CC с определенным значением, при отпускании будет послан 0. Проблема в том, что всё это настроить с помощью VIAL не получится. Я, конечно, добавил обходной путь в виде кастомных кейкодов, проблема в том, что в VIAL есть ограничение на количество таких кейкодов. Если вам не нужно MIDI, то спешу вас успокоить: MIDI-функционал включается отдельным флагом, вся его документация находится в отдельных файлах, так что, если оно вам не надо, вы его даже не заметите. Также в DMK добавлена поддержка энкодеров. Все 4 энкодера Омска прекрасно работают. Пока что MIDI и энкодеры протестированы на RP2040/RP2350.
#DMK
micro
Я очень люблю вим, я писал плагины для вима. Но я чертовски не люблю приложения, которыми невозможно пользоваться, пока ты их не допилишь плагинами и конфигами до какого-то адекватного состояния. И вим как раз из таких. Каждый раз запуск вима без конфигов — это борьба между тем, чтобы быстро поправить пару строчек на удаленной машине, и тем, чтобы ближайшие несколько часов потратить на настройку вима. Не так давно в неовим наконец добавили штатный менеджер плагинов, и я надеюсь, что через несколько лет мы сможем избавиться хотя бы от зоопарка менеджеров плагинов. Другая проблема вима — что как только ты поставил все, что тебе нужно, вим заметно начинает проседать по скорости и приходится настраивать ленивый запуск плагинов для каждого типа файла. И даже со всеми этими плагинами и конфигами вим все еще очень плохая ИДЕ, это хороший редактор, но делать из него ИДЕ — значит выкинуть все те плюсы, которые он несет как редактор, и получить очень перегруженный редактор со странными хоткеями и плашкой ИДЕ, прибитой где-то в углу на ржавом гвозде. И тут мы подходим к главной проблеме вима: без постоянной практики хоткеи вима просто забываются, а так называемые вим-моды в других приложениях, как правило, просто фикция, никто не заходит дальше банального назначения стрелочек на HJKL. А еще в неовиме очень много ЛУА, слишком много. Не то чтобы есть какое-то допустимое количество ЛУА, но в неовиме его кратно больше.
И вроде как все это должен решать хеликс, который из коробки похож на адекватный редактор. Проблема в том, что он похож на вим, то есть это не проблема, проблема именно что он похож, но при этом он абсолютно другой и команды в нем другие и строятся по другому принципу, после десятилетий вима мозг просто ломается и не понимает, почему в чем-то, что выглядит как вим, крякает как вим, не работают вимовские команды. Не то чтобы вимовские команды хорошие или логичные, конечно же нет, просто они уже в мышечной памяти как йцукен-раскладка. Представьте, что вы проснулись в мире, где у вас не йцукен, а, скажем, йбукен, вроде одна буква, но привычку ломает очень сильно.
Емакс примерно как вим, надо пилить очень сильно, очень странные бинды, лисп, но при этом оно еще и слишком перегруженное, недаром говорят, что емакс — это не редактор, а операционная система.
Нано в целом примерно с теми же проблемами с юзабилити, только его даже особо перепилить под себя не выйдет.
И вот мы подходим к micro, ради которого писался этот пост. В нем, конечно, есть и луа, и джосон, но при этом он из коробки пытается дать привычный опыт, в нем ctrl-c — это копирование, а ctrl-v — это вставка. Из коробки подсветка синтаксиса. Из минусов можно отметить, что не очень много плагинов и в целом функционал очень минималистичный, но все, что требуется от простого консольного редактора, он умеет. Этот пост по традиции написан в герое этого поста.
Проект Omsk: Собран первый экземпляр
Собрал первый экземпляр. Проверены midi джеки, энкодеры, кнопки, RGB. Пока что залита простенькая прошивка принимающая и отправляющая MIDI команды.
Думаю в скором времени портирую DMK под Омск.
#Omsk
4row ortholinear keyboard теперь на базе AOSP #3
Я удалил поддержку всех языков, кроме английского и русского, и это снизило размер apk-файла с 60 МБ до 10. Если еще пооптимизировать ресурсы, убрать всё, что связано с голосовым вводом и прочими вещами, которые я не использую, думаю, можно выиграть еще пару мегабайт.
В этой клавиатуре никогда не будет интернета ни для каких целей. Она делалась исходя из вопросов приватности. При необходимости все настройки и словари можно экспортировать и перенести на другое устройство.
Из интересного, что я заметил во время работы над проектом: Gemini шлет флаг, что клавиатуре надо переключиться в режим инкогнито, но при этом Gboard игнорирует этот флаг конкретно для Gemini, в других приложениях она переключает в нужный режим, если есть флаг.
В AOSP-клавиатуре вроде как есть реализация swipe-ввода, но при этом библиотека, которая отвечает за распознавание, проприетарная и недоступна, хотя меня оно не интересует вообще.
#4rowOrthoKBD
+8
4row ortholinear keyboard теперь на базе AOSP #2
Закончил работу над rc1. Клавиатура уже умеет все, что мне надо. Из интересного: управление курсором свайпами по пробелу, удаление выбранного куска свайпом по бэкспейсу, словарь с аббревиатурами для вставок шаблонных сообщений, tap-dance. Например, 2 пробела — это точка, 3 — запятая, 4 — вопросительный знак, 5 — восклицательный знак. Добавлена светлая и тёмная gruvbox. Свайп вниз работает как enter, свайп вправо переключает на слой редактирования, свайп влево меняет язык, свайп вверх — шифт/капс лок.
Удивительно, но у меня осталось даже несколько клавиш без дополнительных символов, но я пока не придумал, что еще добавить.
По поводу публикации исходников: не уверен, что кому-то эта клавиатура, кроме меня, интересна в текущем виде. Добавить загрузку кастомных раскладок и тем из файла не проблема, но не уверен, что я хочу заниматься поддержкой и решением проблем пользователей. Но если вдруг кому-то очень интересно, можете связаться со мной.
#4rowOrthoKBD
Подключаем мультиметры к компьютеру (полное руководство)
Не так давно возникла необходимость подключить несколько мультиметров к компьютеру. Рассказывать про приборы, у которых есть подробное руководство с описанием всех команд, абсолютно неинтересно. А вот устройства, для которых нет ни софта, ни документации, но присутствует USB-порт, вызывают куда более живой интерес.
Наши сегодняшние пациенты — это Victor / RuoShui 189A (он же АКИП-2206) и АКИП-6108.
Для Victor 189A существует родное программное обеспечение, однако найти его можно исключительно на компакт-диске из комплекта поставки — в сети его просто нет. Описание системы команд также полностью отсутствует. Подключив кабель с оптической развязкой к USB-порту компьютера, мы выясняем, что в устройстве используется распространенный чип USB-to-UART CP2102. Устанавливаем необходимые драйверы, инсталлируем фирменную утилиту и проверяем ее работоспособность.
Затем пробуем найти информацию в открытых источниках: аналогичные приборы, документацию или хотя бы описание протокола обмена данными. Похожий мультиметр обнаружился, но и для него описание команд отсутствовало. Инструкцию к протоколу Victor найти все же удалось, но она предназначалась для более старых моделей и, забегая вперед, к протоколу 189A не имела вообще никакого отношения.
Поскольку цивилизованных методов не осталось, устанавливаем связку Wireshark и USBPcap. Подключаем прибор к компьютеру, запускаем захват трафика и начинаем нажимать кнопки в интерфейсе программы. Анализируем перехваченные пакеты. В первую очередь нас интересуют запросы SET_LINE_CODING и сами передаваемые команды, которые можно отследить по направлению Source: Host. Ищем их в строках со значением URB_BULK out в колонке Info. На основе собранных данных пишем собственную программу для работы с прибором.
Если вам вполне достаточно возможностей штатного софта, на этом этапе можно остановиться. Мне же казалось, что мне что-то недоговаривают, и наверняка существуют еще команды. Заметив, что все обнаруженные команды соответствуют шаблону #[A-Z]{2,3}\??, я решил запустить простой перебор всех комбинаций от #A до #ZZZ — как с вопросительным знаком на конце, так и без него. Этот процесс занял много часов, но в итоге удалось обнаружить две дополнительные команды. Одна из них активирует сервисное меню на мультиметра, а вторая запрашивает данные, связанные с внутренней памятью прибора, хотя точно расшифровать их назначение так и не удалось.
С прибором АКИП-6108 ситуация обстоит несколько иначе: для него тоже нет описания системы команд, но, в отличие от предыдущего случая, полностью отсутствует и родное ПО. Поэтому мы сразу переходим к поиску аналогов. Как выяснилось позже, нам подходят практически любые LCR-метры в похожем корпусе. Скорее всего, прародителем этой линейки был прибор от Keysight, а все остальные модели — лишь его многочисленные клоны под разными брендами. Изучив документацию к схожим устройствам, я обнаружил, что в руководстве к BK Precision 880 приведено подробное описание протокола и команд. Подключаем АКИП-6108 к компьютеру, определяем установленный чип USB-to-UART (им оказался популярный CH340G), пробуем отправлять команды — и они работают! Очевидно, благодаря авторитетному первоисточнику от Keysight, даже сторонние производители клонов решили использовать стандартный и распространенный протокол SCPI, а не изобретать собственный велосипед.
github lcr
github Victor 189A
#DMM
Уведомление об автоматизации kbdAE
В целях обеспечения прозрачности деятельности настоящим извещаю вас о том, что в течение определенного времени некоторые публикации в сообществе kbdAE осуществляются с использованием специализированного программного обеспечения (бота). Подбор графических материалов (картинок) по-прежнему производится исключительно в ручном режиме силами редакции, однако форматирование гиперссылок и публикация материалов в установленное время в настоящее время автоматизированы. Данные изменения никоим образом не отразятся на качестве и содержании публикуемого контента.
Необходимость автоматизации обусловлена тем, что, несмотря на периодическое содействие со стороны третьих лиц, подавляющее большинство публикаций подготавливается мной единолично. Процессы оформления ссылок и настройки отложенных публикаций требовали значительных временных затрат, что приводило к существенному снижению продуктивности. Информационный канал функционировал в прежнем формате на протяжении приблизительно трех лет, и в последнее время выполнение вышеуказанных задач приобрело характер обременительной рутины.
Пользуясь случаем, выражаю официальную благодарность ft256.ru за предоставление технических мощностей, а также за обеспечение хостинга и деплоя вышеуказанного программного обеспечения.
+2
4row ortholinear keyboard теперь на базе AOSP
С момента выхода последнего поста по по проекту я попробовал огромное множество клавиатур, но мне ничего не подошло. Либо софтовые клавиатуры пытаются копировать положение клавиш с десктопной раскладки добавляя стаггер и делая крохотные кнопки, либо клавиатура имеет ну уж очень вертикальную кривую обучения, как thumb-key.
Поэтому я вернулся к идеи своей собственной раскладки. К сожалению в силу ряда целого ряда причин использовать jbak2 не представляется возможным, других клавиатур с хорошим редактором расскладок я не нашел, поэтому начал делать свою на базе AOSP. И это на самом деле дало намного больше контроля над поведением клавиатуры. Пока что проект находится в глубокой альфе, то что вы видете на скриншотах уже третья ревизия и сейчас это стало уже похоже на что-то адекватное, что-то что не стыдно показывать и использовать.
Основная идея все та же, 4х10 с цифрорядом, без всяких слоев с символами. Недостающие символы через тапденс.
#4rowOrthoKBD
Наброски 30: компактная плата на 6502
Думаю, все же стоит оговориться что 6502 это 8 битный микропроцессор из-70х годов, который испозьзовался в Apple II, NES, Commodore 64.
Я с удивлением обнаружил что сейчас выпускается современный 6502 еще и в QFP корпусе. В отличие от многих 16 битных процессоров, которым требовалось по 3-4 разных питания, ему нужно только 5в, а соврменные версии готовы работать и от более низких напряжений. С использованием всего 5 чипов можно получить полноценный 8 битный компьюттер который с бейсиком который общается с внешними устройствами через компорт. Плата размером с кредитную карту которая по одному type С порту и питает компьютер и выводит виртуальный COM порт и все это с настоящим microsoft basic.
#Наброски
DMK #8
Выложил загрузчик для Миландра на github. Там есть подробная инструкция, что с ним делать. Также там есть пример Blink, адаптированный под этот загрузчик. И конечно же этот загрузчик уже интегрирован в DMK.
Протестировал VIAL и RGB на nRF52840. Остается только реализовать RGB для Миландра.
Реализованы RGB анимации, макросы и аккорды через VIAL.
#DMK
DMK #7 DFU для Миландра
Я уже много написал про Миландр, на нем, кстати, тоже протестирован VIAL, но как-то особо не акцентировал внимание на том, зачем оно вообще надо, а это ведь самое интересное. В отличие от любого другого МК, Миландр дает уникальные возможности. Вот берешь ты какой-нибудь STM32 или RP2040 — у тебя есть полноценное SDK, куча примеров проектов, а если что-то не сделано производителем, это давно реализовано комьюнити. Купить платы и чипы — не проблема в любом количестве.
Но у Миландра совершенно все не так. SDK очень своеобразное. Без глубокого знания лора компании, а также различных особенностей чипов, о которых никто не пишет в документах и они по старинке передаются из уст в уста, лезть в это дело не стоит. Чтобы хоть что-то работало, тут очень важно тонко чувствовать тонкие вибрации кремния в сердце МК. Примеров нет — то есть они есть, но в будущем времени, когда ты сам их себе напишешь. Бутлоадера тоже, конечно же, нет, что позволяет не ограничиваться рамками стандартов и сделать себе любой бутлоадер: хочешь — с CDC, хочешь — HID, хочешь — DFU, хочешь — UF2. Чипы достать — проблема, поэтому любые работы с Миландром похожи на игру в сапера. Одна ошибка — и ты окирпичишь чип, а новый достать дорого и сложно, что придает разработке нотки пикантности.
Я, кстати, решил реализовать именно DFU-бутлоадер. К сожалению, он занимает 8 КБ, и, вероятно, можно было сделать лучше. Но именно в этом прелесть Миландра: ты можешь все всегда сделать лучше... ну, или хоть как-нибудь.
#DMK
+2
DMK #6 VIAL & RGB
Завел RGB на rp2040/rp2350. Минимально завел VIAL. Работает смена раскладки, управление RGB (без анимаций) и тестер матрицы.
Я решил проблему с JSON. Нам более чем хватает данных в config.h чтобы автоматически генерировать *.json во время сборки. Поэтому если при компиляции в папке нет *.json он гененрируется автоматически, да может в нем не будут очень красиво раставлены кнопки, но все остально там будет прописано автоматически.
#DMK
Делаем опыт использования терминала на windows еще немного лучше
Coreutils — стандартные юниксовые утилиты наконец для windows
walk — небольшой терминальный файловый менеджер
far — большой терминальный файловый менеджер
Chris Titus Tech's Windows Utility — набор скриптов на все случаи жизни
DMK #5 VIAL?!
Не то чтобы мне сильно нравился VIAL, но у него много поклонников и он использует USB HID для передачи данных. А значит, что у Миландра должно хватить эндпоинтов чтобы менять расклдаку можно менять без перезагрузки.
Из минусов придется адаптироваться к системе кейкодов VIAL и придется добавлять *.json в проект. Безусловно можно добавить какой-нить yaml2json конвертер, но это потребует существенного расширения документации. Очень хотелось бы чтобы документация также оставалась крайне минималистичной.
#DMK
DMK #4 Editor
Начаты работы по созданию визуального редактора раскладок для DMK. Пока что задача сделать просто генератор раскладок (текстового конфига). В будущем можно будет сделать запрос текущей раскладки и отправку новой по COM-порту.
#DMK
PNCATEHO #29: документация и MIDI
Добавил MIDI прошивку для ULP версии. В ней можно менять цвета RGB и MIDI ноты/команды.
Существенно обновлена и расширена документация. Добавлены инструкции по сборке. Добавлены ссылки на все имеющиеся варианты РИСАТЕНО и прошивки для них
github
#PNCATEHO
DMK #3
Выложил на GitHub несколько примеров по работе с USB на микроконтроллере Миландр. К сожалению, за все те годы, что этот МК на рынке, а до этого его предшественник, ни производитель, ни сообщество не сделали ничего подобного. TinyUSB под него тоже никто не портировал. Так что, по сути, пришлось все реализовывать с нуля. Так как у МК всего 3 эндпоинта, быть одновременно клавиатурой и виртуальным ком-портом он не может. Поэтому я сделал пример combo. В нем, если при загрузке зажата кнопка, то МК загружается в режиме ком-порта и принимает в консоли букву a-z и записывает ее в ПЗУ. Если при загрузке кнопка не нажата, тогда он загружает режим клавиатуры и при нажатии кнопки отправляет букву, которая записана в памяти. И вот на основе этого примера можно сделать как просто запись новой раскладки без перепрошивки, так и нечто куда более интересное — полноценный бутлоадер с прошивкой по ком-порту. И в таком виде оно, вероятно, куда более понятное для сообщества, чем заливка прошивки исключительно через программатор.
К сожалению, поддержка у Миландра оставляет желать лучшего. Начиная с SDK и примеров, которые сделаны только под Keil и IAR, о которых я ничего не знаю, да и выглядят они так, как будто они 20 лет не обновлялись. А для GCC предлагается написать реализацию самостоятельно. Да и примеров для К1986ВЕ92FI в папке нет, поэтому предполагается использовать примеры из папки MDR32F9Q2I. Как об этом узнать? Это надо быть очень глубоко погруженным в лор Миландра и знать, что «обозначение MDR32F9Q2I – это маркировка микроконтроллера К1986ВЕ92QI, а К1986ВЕ92FI выпущен как ближайшая замена К1986ВЕ92QI, поэтому примеры для них совместимы», потому что на сайте и в документации об этом не написано. Касательно ошибочных номиналов резисторов компания признала проблему и предложила перепаять их самостоятельно со словами, что в новых партиях они это дело постараются исправить. Мне кажется, что если бы такая проблема была с каким-нибудь китайским МК, мне бы вернули хотя бы часть денег, либо мне бы уже ехала новая отладочная плата с правильными резисторами.
Данный пост написан на Кабарге (nRF52840) с DMK. На текущий момент моя стандартная раскладка полностью работает на DMK. Также проверена работа на RP2040 и Миландре.
#DMK
