Что делает Линус Торвальдс, когда устаёт от ядра Linux
Представьте, что создатель Linux и Git решил на досуге разобраться в аналоговой схемотехнике и цифровой обработке звука. В итоге на GitHub появился проект GuitarPedal. Это полноценная гитарная мультиэффект-педаль, где Линус сам спроектировал печатные платы в KiCad и написал прошивку на C.
Проект вырос из его старого заброшенного прототипа. Раньше там стояли аналоговые потенциометры, настраивать которые было сущим наказанием. Теперь педаль получила OLED-экран, пару энкодеров и свежий микроконтроллер.
Модульное железо и крошечные разъёмы
В основе железа лежит разборная конструкция. Вместо того чтобы разводить всю схему на одной большой плате, Линус разбил устройство на четыре отдельных модуля.
Первая плата несёт микроконтроллер RP2354 из семейства Raspberry Pi Pico 2. На второй расположился аудиокодек TI TAC5112, оцифровывающий сигнал с гитары. Третий модуль содержит разъёмы питания 9V и аудиоджеки, а четвёртый отвечает за интерфейс с экраном 128x128, ножными переключателями и энкодерами.
Модули соединяются между собой плоским FFC-шлейфом на 12 контактов. Передача данных идет по I2C для управления и по I2S для аудио. На самих платах стоят разъёмы HiRose BM28 с шагом всего 0.35 мм. Торвальдс открыто пишет в README, что работать с такими микроскопическими компонентами тяжело при ручной сборке. Зато они дают возможность уместить всё в плотный корпус.
Автор подчёркивает: модульность нужна была ради экспериментов с компоновкой. Если соберётесь повторить конструкцию, разумнее поместить кодек прямо на плату разъёмов, а микроконтроллер — на плату управления. Это избавит от двустороннего монтажа и сложных шлейфов.
Управление и сборка прошивки
Сверху на корпусе расположен монохромный дисплей. Под ним находятся два вращающихся энкодера с встроенными кнопками и две ножные кнопки.
Верхний энкодер меняет значения текущего параметра, а нажатие на него переключает на следующий параметр в списке. Нижний энкодер перелистывает сами эффекты. Левая ножная кнопка включает или выключает выбранный эффект носком ботинка, а правая переключает педаль в режим сквозного прохождения сигнала.
Сборка прошивки устроена без лишних усложнений. Исходники написаны на чистом C с привязкой к pico-sdk и tinyusb. На Linux процесс выглядит так:
git clone https://github.com/torvalds/GuitarPedal.git
cd GuitarPedal/Software
make prep
make
В каталоге build/ появляется готовый файл blink.uf2. Чтобы прошить устройство, нужно зажать оба энкодера при подключении по USB и просто скопировать файл на появившийся виртуальный накопитель.
Что внутри DSP
Самая интересная часть репозитория находится в папке софтварной обработки. Торвальдс написал собственный набор DSP-алгоритмов. Вычисления выполняются в 32-битном формате с плавающей запятой.
Вот что уже умеет педаль:
- Шумоподавитель (Noise Gate). Пороговый уровень опускается до -85 dBV. В коде рассчитываются параметры атаки и затухания, чтобы отсекать гул звукоснимателей без быстрой обрезки хвостов струн. Светодиод статуса меняет яркость в момент срабатывания гейта.
- Компрессор. Работает с регулировкой времени атаки, затухания и уровня выравнивания громкости.
- Буст с ограничением сигнала. Вместо стандартного среза верхушек волны (clipping) Линус применил складывание сигнала (folding). Когда амплитуда превышает порог, волна не режется, а «заворачивается» обратно. Это создаёт насыщенный спектр гармоник.
- Эхо и задержки. Эффект Echo King перенесён из проекта Hothouse и эмулирует ленточный дилей Maestro Echoplex. Рядом присутствуют базовые фазер и фланжер.
- Питч-шифтер. Работает без тяжелого быстрого преобразования Фурье. Алгоритм использует кольцевой буфер задержки с двумя фазами и синусоидальным сглаживанием на стыках. При добавлении обратной связи получается эффект эхо с постепенным уходом тона.
- Десятиполосный эквалайзер. Каждая полоса регулируется от -20 dB до +20 dB, а текущая АЧХ отрисовывается графиком на экране.
В коде также есть заготовка для передачи звука по USB на компьютер, хотя сам Линус предупреждает о нестабильности этой части.
Зачем смотреть этот проект
Репозиторий GuitarPedal интересен не столько как готовый музыкальный прибор, сколько как наглядный пример эмбеддед-разработки полного цикла от одного человека.
Здесь можно подсмотреть:
- Готовые схемы и разводку в KiCad с примерами работы над компактным корпусом
- Нативный C-код для работы с аудиокодеком через I2S на чипах RP2040 и RP2350
- Понятные математические алгоритмы гитарных эффектов без внешних тяжёлых библиотек
- Простой UI для OLED-экранов на базе энкодеров
Если хочется разобраться в DSP на микроконтроллерах или посмотреть, как Торвальдс пишет код вне ядра Linux, изучить этот репозиторий точно стоит.
