
Разработчик olegkapitonov представил первый стабильный релиз метронома IronTick. Исходный код проекта написан на C++ и опубликован на GitHub под лицензией.
«Это легковесный, точный, кроссплатформенный метроном, использующий фреймворк Qt6 (Qt 6.4+). Отличается тем, что генерирует непрерывный аудиопоток с кликами вместо того, чтобы воспроизводить отдельные клики по таймеру, как это делает большинство других программ‑метрономов. Благодаря такому подходу, IronTick кликает намного стабильнее и точнее, даже при наличии большой фоновой нагрузки», — пояснил автор проекта.
Возможности и особенности проекта:
-
высокая точность: стабильные щелчки, точное поддержание темпа;
-
поддержка различных размеров: основные размеры (2/4, 3/4, 4/4, 6/8), а также возможность задания любого другого размера;
-
визуализация: индикатор сильных и слабых долей;
-
управление темпом: изменение темпа, запуск и останов метронома возможен при помощи одной клавиатуры, без мыши.
«Я решил разработать это приложение, потому что столкнулся с серьёзной проблемой большинства существующих программных метрономов — они часто не точно держат темп, пропускают клики. Ситуация сильно обостряется на слабых машинах при большой фоновой нагрузке. Когда я стал разбираться в причинах такого поведения, оказалось что типичный подход при реализации этих метрономов — создание таймера, на срабатывание которого вешается запуск воспроизведения короткого звука щелчка. Вот и ответ, поскольку это все работает в многозадачной ОС, таймеры в пользовательских процессах не гарантируют работы в реальном времени с приемлемой для музыканта точностью. Периодически, таймер срабатывает значительно позже нужного момента времени.»
Эта проблема в IronTick решена очень просто — он синтезирует непрерывный PCM поток аудиосемплов, в котором точно в нужные места вставлены звуки кликов. Этот поток воспроизводится непрерывно звуковой картой, как любой аудио поток, например песня в аудиоплеере. У вас же песня в плеере не заикается периодически, независимо от того какая программа на переднем плане, и какая нагрузка? Вот и метроном, работающий по такому принципу, щёлкает так же стабильно как аудио плеер воспроизводит трек. Для этого ему не нужен неточный таймер.
Вторая проблема, уже менее важная — как правило, неудобно менять темп, не выпуская гитару из рук. Поэтому, в IronTick из коробки сделано клавиатурное управление одной клавишей (именно одной, не надо зажимать «аккорды») для основных функций. Так же, сделан настраиваемый шаг увеличения/уменьшения темпа. Я использую это так — начинаю отрабатывать пассаж с медленного темпа, например 120 bpm, и периодически нажимаю клавишу J чтобы увеличить bpm на 5 единиц. Потом ещё на 5, и так далее. Можно задать любой шаг. Нажать одну кнопку легко, не выпуская медиатор из рук»,
— рассказал разработчик решения.

Источник: habr.com