Loading 3D model… large boards can take a moment.
Part of the custom optical digital MIDI piano project. Companion board: PIANO_H7 (controller board).
Часть проекта самодельного цифрового MIDI-пианино на оптических датчиках. Парная плата: PIANO_H7 (плата-контроллер).
PIANO_G4_cbt6 is the firmware for the sensor boards of a self-built digital MIDI piano with optical key sensing. Each key's hammer flies past optical sensors; the board measures the hammer flight time between sensor points and reports it to the controller, which converts it into a realistic note velocity — the principle used in high-end digital pianos.
The instrument is split across two board types:
| Board | MCU | Role |
|---|---|---|
| PIANO_H7 | STM32H723VGTx | Master controller: UI, USB-MIDI, manages the sensor bus |
| PIANO_G4_cbt6 (this repo) | STM32G474 | Distributed sensor readers (comparators + timers) |
The boards were fabricated and assembled in late summer–autumn 2025 and are used to play on a real instrument.
kicad_for_test_impedance/ and
ibis model/.3D render of the assembled boards, with the sensor-board PCB layout and schematic:
Piano_G4/ Application firmware (piano_g4.cpp/.hpp)
Core/, Drivers/ STM32 HAL/LL, CMSIS, startup
G4_bootloader/ Bootloader (v1)
G4_bootloader_v2/ Bootloader (v2)
kicad_for_test_impedance/ Impedance test (KiCad)
ibis model/ IBIS models / signal-integrity
pcb/ PCB layout, schematic and 3D render (PNG)
cmake/, CMakeLists.txt, CMakePresets.json
The project uses CMake + the ARM GNU toolchain (configured via STM32CubeMX / the included presets).
cmake --preset <preset> # see CMakePresets.json
cmake --build --preset <preset>
Flash with your usual ST tool (ST-Link / DFU), or update over the UART bus from the PIANO_H7 controller.
Released under the MIT License.
If you use or reference this work, please cite it via its DOI (see the badge
above) or the CITATION.cff file.
PIANO_G4_cbt6 — это прошивка плат-датчиков самодельного цифрового MIDI-пианино с оптическим считыванием нажатий. Молоточек каждой клавиши пролетает мимо оптических датчиков; плата измеряет время пролёта молоточка между точками сенсоров и передаёт его контроллеру, который вычисляет реалистичную velocity ноты — принцип, используемый в дорогих цифровых пиано.
Инструмент состоит из двух типов плат:
| Плата | МК | Роль |
|---|---|---|
| PIANO_H7 | STM32H723VGTx | Главный контроллер: интерфейс, USB-MIDI, управление шиной датчиков |
| PIANO_G4_cbt6 (этот репозиторий) | STM32G474 | Распределённые платы-датчики (компараторы + таймеры) |
Платы изготовлены и собраны в конце лета — осенью 2025 года и используются для игры на реальном инструменте.
kicad_for_test_impedance/ и
ibis model/.3D-вид собранных плат, трассировка платы-датчика и её схема:
Piano_G4/ Прошивка приложения (piano_g4.cpp/.hpp)
Core/, Drivers/ STM32 HAL/LL, CMSIS, startup
G4_bootloader/ Бутлоадер (v1)
G4_bootloader_v2/ Бутлоадер (v2)
kicad_for_test_impedance/ Тест импеданса (KiCad)
ibis model/ IBIS-модели / целостность сигналов
pcb/ Трассировка, схема и 3D-вид (PNG)
cmake/, CMakeLists.txt, CMakePresets.json
Проект использует CMake + ARM GNU toolchain (настройка через STM32CubeMX / включённые пресеты).
cmake --preset <preset> # см. CMakePresets.json
cmake --build --preset <preset>
Прошивка — обычным инструментом ST (ST-Link / DFU) либо обновление по шине UART с контроллера PIANO_H7.
Распространяется под лицензией MIT.
При использовании или ссылке на эту работу, пожалуйста, цитируйте по DOI
(см. бейдж выше) или через файл CITATION.cff.
Updated
No comments yet. Be the first to ask about this board.