dubshift

dubshift

На Пикабу
104 рейтинг 0 подписчиков 0 подписок 1 пост 0 в горячем
5

Хотел английский язык в гитарном процессоре, а в итоге написал свою прошивку⁠⁠

Сразу оговорюсь: пока только Ampero Mini и Ampero II Stomp!

Принес вам в эту пятничку историю о том, как полез менять язык в гитарном процессоре и немного увлекся.

Я играю на гитаре. Долгое время пользовался обычным педалбордом, многие педальки паял сам. Больше всего горжусь копией FZ-2 Hyper Fuzz: смог уместить плату, рассчитанную на большой корпус, в обычный педальный. Пришлось как следует утрамбовать детали :) Еще — фейзером, на котором обкатал фрезеровку двусторонних плат на ЧПУ и работу с SMD-компонентами. Очень они мне понравились.

Вообще я много всего собирал, пока было время

Вообще я много всего собирал, пока было время

Но ближе к делу! В какой-то момент я понял, что хочу процессор. Не сказать, что я сильно зависим от предрассудков насчет цифрового и аналогового звука — хотелось, чтобы все просто работало без пересборки цепи и вечного ГАСа, то есть желания купить еще одну железку. Так мне в руки попал Ampero Mini. Поиграл с ним, понял, что хочу больше. Так ко мне попал Ampero II Stomp.

Вот они, сверху вниз. Перешиты раз по 100 уже

Вот они, сверху вниз. Перешиты раз по 100 уже

Тут история и закручивается.

Сэкономив почти 10 кровно заработанных тысяч рублей, я купил версию Stomp для внутреннего китайского рынка. А это означало только китайский язык интерфейса. Погоревал тогда немного — через ПК все отлично настраивалось, а на самом аппарате кое-что пришлось понять и запомнить. Попробовал написать в поддержку, но там сказали, мол, «это не исправляется». Даже предложили отправить им мой аппарат в обмен на глобальный — но перспектива ждать два с лишним месяца без него просто ради языка…

Так с этим и жил. Попробовал закинуть в ChatGPT прошивку. Он с умным видом ее анализировал, крутил-вертел, но в итоге сказал, что ограничения не нашел и, скорее всего, оно аппаратное.

Спустя время попробовал снова, теперь уже с Клодом. Вооружились Ghidra — программой для разбора скомпилированного кода — и получилось! Нет приятнее ощущения, чем от удавшейся шалости — бишь, реверса, когда аппарат запускается и делает то, что хочешь ТЫ, а не дядя Ляо или кто бы то ни было.

Файл прошивки для этой модели один и тот же для разных регионов. Английский и китайский внутри уже есть.

Тогда почему в меню только один язык? Прошивка — это еще не все. На самом устройстве, в заводской памяти рядом с серийником и регионом, хранится ограничение по языкам — битовая маска. Если по-простому, набор флажков: этот язык разрешен, этот нет. У моего Stomp был разрешен только китайский.

То есть английский никто не вырезал. Его просто не показывали в меню.

Есть еще нюанс: настройка языка хранит не название языка, а его номер в получившемся списке. Когда в списке один китайский, первая строка — китайский. Если перед ним появляется английский, первая строка становится английской.

Решение, короче, получилось в стиле «если гора не идет к Магомеду». В картинках:

*Языковые пакеты уже внутри. Меняется ответ функции в прошивке, а заводская память остается как была.*

Вместо изменения заводских флажков я поправил функцию, которая сообщает меню, какие языки разрешены. Теперь она отвечает: английский и китайский.

Модификация была прямо в файле прошивки. Зашил его. Аллилуйя — английский в списке появился!

Сказать, что я обрадовался, — ничего не сказать. Неповторимое ощущение успеха! И вот тут меня понесло.

Вот возьмем, к примеру, драм-машину и лупер — штуку, которая записывает сыгранный кусок и гоняет его по кругу. По отдельности все отлично, а вместе на моем Stomp нормально подружить их не получалось.

Причина простая. Заканчиваешь писать луп, нажимаешь на педаль — как тебе кажется, ровно в конце такта. Но чуть раньше или чуть позже все равно попадешь. Допустим, петля получилась на 50 мс длиннее, чем нужно. На каждом круге эти 50 мс прибавляются. Через пять повторов — уже четверть секунды мимо барабанов.

Поэтому я перехватил команду завершения первой записи: теперь она ждет, пока длина лупа станет кратной выбранному числу долей. Петля закрывается по сетке драмки, а не по точности моей ноги.

На Mini, кстати, штатный SYNC уже был, но со своими проблемами. Там пришлось не только поправить длину записи, но и удерживать петлю в синхроне с барабанами во время воспроизведения.

Следующей фичой стали два LFO. Если не сталкивались: это такая автоматическая рука, которая крутит выбранный параметр эффекта. Я люблю гибкость, поэтому сделал разные формы и режимы. Прикольнее всего вешать LFO на Position питч-шифтера и ставить S&H — случайные значения, которые меняются через заданные интервалы. Попробуйте, если прошьете.

LFO использует назначения педали экспрессии, поэтому пока он работает, физическая педаль экспрессии в этом пресете не действует.

А можно нарисовать свою последовательность прямо пальцем. На видео — Mini.

XY пэд на Mini

XY пэд на Mini

Еще добавил секвенсор для драмки: восемь пользовательских слотов, в которых можно набить свой ритм. Попробовал открыть скрытые параметры заводских усилителей. Добавил XY-пэд, чтобы экспериментировать: водишь пальцем по экрану и меняешь сразу два параметра. И несколько новых эффектов для Mini.

Свой ритм на Mini

А это редактор для Stomp. Здесь рендер интерфейса, не фотография экрана

А это редактор для Stomp. Здесь рендер интерфейса, не фотография экрана

Прошивку разбирал по функциям: смотрел, что делает каждая нужная мне часть, проверял, пробовал менять. Чтобы не шить процессор после каждой правки вслепую, собрал эмулятор на ПК. Можно гонять код без железа и ловить хотя бы часть ошибок заранее.

Но что-то пошло не так.

Попробовал я написать эффект под миник. И он вешал звук. Интерфейс продолжал работать, а после включения эффекта — тишина до перезагрузки. Причина нашлась на третий вечер: пара строк, которые в обычной программе отработали бы за микросекунду, здесь крутились в цикле без выхода. Такая вот специфика компилятора. Этих специфик, кстати, наберется на отдельный пост на Хабре — думаю, надо будет запилить. Есть еще о чем рассказать.

Что в итоге сейчас. Ветка 1.x ставится как обычное обновление: берете официальный файл, собираете модифицированный на сайте и прошиваете. Откат — тем же способом, только официальным файлом. Заводской сектор с серийником и регионом не меняется. Сохранить возможность вернуться назад было главным условием, когда я все это начинал. Обещать «кирпич невозможен» не буду, но штатный путь отката есть.

Если бы это был просто конец статьи, было бы пресно и невкусно. Поэтому оставлю задел на вторую часть: я не остановился и на этом. Захотел сделать свою прошивку, с… ну как Бендер, короче.

Так появилась линейка Dubshift 2.x — собственная прошивка-грувбокс. LFO, БОЛЬШЕ LFO!! Драм-машина с роландовыми вайбами, синт (в Mini — один, в Stomp — четыре), четыре отдельные дорожки лупера, микс-шина, лайв-режим. Это уже другая ветка: вместо штатного набора усилителей и эффектов — свой звуковой движок. Пока эффекты больше для примера.

На Mini все получилось сравнительно легко, хотя при отладке пришлось вмешиваться и в железо. Это про разработку, а не про установку прошивки пользователем. На Stomp было еще сложнее — из-за архитектуры и того, как управляющий процессор общается с аудиопроцессором.

Щупал шину

Щупал шину

Для Stomp ветка 2.x еще не опубликована. Думаю, скоро появится в доступе. Мой исследовательский пыл все еще не утолен, поэтому прямо сейчас пилю SDK для своих эффектов и синтезаторов. То бишь можно будет написать эффект на C, собрать и залить в свою педаль. Или поделиться с другом. Или и то, и другое.

Прошивка бесплатная, сайт — dubshift.dev. Вопросы — в комменты, отвечу. Код прошивки не открываю: еще не готов. Может, и не открою вовсе. SDK, скорее всего, будет открыто на гите. Тестируйте, делитесь впечатлениями. Прошивка в ранней альфе, так что баги быть могут и будут. Крепимся.

Показать полностью 11 2
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества