Если кратко — то для каждого человека можно определить диапазон допустимых для тренировки значений пульса. Диапазон считается в зависимости от возраста (и, если нужны более точные значения — пульса покоя). Ниже этого диапазона, как я понял, тренировки особого смысла не имеют, выше — однозначно вредны. Этот допустимый диапазон делится на 5 зон, от первой, разминочной, с самым спокойным пульсом, до пятой — которую достигать при обычных тренировках не рекомендуется (только если вы спортсмен, готовитесь к соревнованиям и точно знаете, что делаете). Тренировки в разных зонах (и в различных их комбинациях) позволяют достигать разных целей. Например, тренировки во второй зоне считаются жиросжигающими, потому что до 85% затраченных на тренировку калорий в этом случае расходуются из жировых запасов, во всех остальных случаях этот процент меньше. Третья зона по максимуму развивает дыхательную и сердечно-сосудистую систему, а четвертая — способствует росту мышечной массы и выносливости.
Узнав все эти детали, я попробовал бегать, контролируя пульс с помощью приложения для отслеживания тренировок (на тот момент я пользовался runkeeper) — но это оказалось не очень удобно — приложение могло только с определенной периодичностью сообщать текущий пульс, и я постоянно выбегал за определенные для себя границы зоны пульса. А еще, в самом начале своих тренировок, я попробовал бегать под музыку — выяснилось, что c музыкой бегать интереснее, чем без — но при этом у музыки есть свой темп, и что самое досадное — свой у каждой композиции — далеко не всегда совпадающий с тем темпом, в котором ты решил пробежать конкретную тренировку. В результате всех этих наблюдений и экспериментов появилось представление об идеальном музыкальном сопровождении для тренировок — во-первых, оно должно подстраиваться под текущий темп, чтобы бежать в ритм музыки, а во-вторых — давать обратную связь на основании данных с пульсометра, побуждая ускоряться или замедляться, когда пульс выходит за границы выбранной для тренировки зоны пульса. Так как опыт разработки приложения под андроид у меня уже был, решил проверить, получится ли воплотить эту идею в коде.
В самом первом варианте приложения, для проверки работоспособности идеи — получится ли регулировать пульс, давая обратную связь по аудио каналу, в качестве сопровождения было просто пиканье разных тонов. Прототип написал достаточно быстро, единственная проблема была в тестировании — первая работающая версия была готова примерно в феврале, а в это время года в нашем северном городе сложно найти место для пробежек — поэтому самое первое тестирование в реальных условиях поехал проводить на лыжах. Есть анекдот про опыт экстремального программирования — а у меня в ту зиму появился опыт экстремального QA — в такую пургу, что проторенную лыжню на следующем кругу заметало до состояния ровного поля. Но при всем этом приложение писком в наушниках вполне понятно сигнализировало, как надо изменить темп, чтобы пульс попал в нужный интервал.
После подтверждения работоспособности идеи можно было приступать к основной разработке. Следующим этапом стала процедурно-генерируемая музыка, затем — более удобный интерфейс. В течении лета, тестируя приложение, я пробежал порядка 300 км, включая два полумарафона. Усовершенствовал работу с акселерометром и генератор мелодий, поэкспериментировал с разными ритмами. Обнаружил, кстати, что бежать медленно — сложнее, чем быстро — постоянно необходимо себя сдерживать и контролировать темп — приложение в этом хорошо помогает, оказывается.
Следующей зимой обнаружил, что из-за того, что ритм и темп движений на лыжах совсем другой, чем при беге (причем еще и для классики и свободного стиля серьезно отличается) — поэтому для поддержки лыжных тренировок нужно организовывать отдельный режим. Потратил несколько месяцев на это, но в итоге пока что решил отключить эту функциональность, как недоработанную и сосредоточиться на беге. Примерно в это время те же товарищи, которые обратили мое внимание на пульс, посоветовали для развития выносливости заняться интервальным тренировками. Это когда за одну тренировку чередуешь бег с разным уровнем пульса (т.е. с разным темпом) — например, 10 минут бежишь в лёгком темпе, с пульсом во второй зоне, а потом — 2 минуты ускорения, чтобы пульс был в четвертой зоне — и таких циклов 3-5 за тренировку. Было решено добавить поддержку схем для интервальных тренировок. Последним из крупных нововведений (на текущий момент) стал режим для тех, у кого нет пульсометра — контроль темпа на основании только данных от акселерометра.
Всего на данный момент приложение поддерживает 3 режима:
- Тренировка в конкретной зоне пульса — выбираешь конкретную зону, в которой хочешь бежать, жмешь «начать тренировку» — и бежишь, пока не надоест, слушая в наушниках музыку, подсказывающую, надо ли ускориться или замедлиться
- Интервальная тренировка — создаешь схему интервальной тренировки (сколько-то минут — разминка в первой или второй зоне, затем, к примеру, 4 раза по 5 минут во второй зоне, 2 минуты в четвертой, в конце тренировки — еще 10-15 минут во второй зоне) — приложение ведет отсчет времени с начала тренировки и по достижению очередного интервала подает специальный звуковой сигнал и повышает/понижает темп музыки, чтобы помочь попасть в зону пульса, выбранную для следующего интервала
- Тренировка в с определенным темпом — для тех, кто хочет использовать приложение без подключения к пульсометру. Указываешь диапазон для темпа, в котором хочешь пробежать тренировку — например, не меньше 140 и не больше 150 шагов в минуту. После начала тренировки приложение ведет себя так же, как и в первом режиме, только контролирует не пульс, а частоту шагов через акселерометр
Так же по результатам тренировки в любом из режимов приложение строит график, который показывает, насколько получилось уложиться в заданные диапазоны, и рассчитывает условный коэффициент попадания в диапазон. Выглядит это сейчас как-то так (и это один из первых кандидатов на дальнейшие усовершенствования):
Из нерешенных проблем на текущий момент — некорректная работа приложения, если в системе для приложения включен режим оптимизации электропитания (например, «экономия заряда батареи» на Nexus 6P или «контроль фоновой активности» на Redmi). В этом случае при выключении экрана и переходе приложения в фоновый режим в некоторых ситуациях перестает срабатывать акселерометр. Пока что не смог найти универсального решения, просто добавил сообщение с необходимостью отключить такие режимы для корректной работы приложения:
Дальнейшие планы по развитию приложения — в первую очередь, поэкспериментировать с генеративными нейросетями для создания музыки. Так же в планах — улучшение алгоритма обратной связи и интеграция с соцсетями — чтобы можно было поделиться графиком с результатом тренировки.
В общем, пробежав с этим приложением уже порядка 500 километров во всех возможных режимах, решил, что пришло время показать его миру — выложил приложение в открытое бета-тестирование на Google Play — хочется понять, будет ли применяемый в приложении подход помогать достигать результатов кому-то еще, кроме меня. Собственно, заголовок про тестировщиков, любящих бегать — как раз про это. Кстати, готовя приложение к бета-тестированию, обнаружил в Google Play возможность проводить распродажи — так что, по поводу публикации статьи на хабре, сделал приложение бесплатным на ближайшую неделю — с 22 по 29 мая — так что, если вы увлекаетесь бегом и хотите попробовать новые способы контролировать пульс во время тренировки, или просто побегать под автоматически генерируемую музыку, старающуюся подстроиться под ваш темп — добро пожаловать. Ставьте приложение и делитесь впечатлениями, буду благодарен за любые отзывы — это мой первый опыт в публикации и продвижении мобильных приложений. А еще я пытаюсь найти способы рассказать про приложение тем, кто может быть в подобном заинтересован — вдруг кто-то знает подходящие группы в соцсетях или другие ресурсы, где собираются люди, увлекающиеся бегом, которым можно было бы рассказать про это приложение — опять-таки, буду очень благодарен.
Refridgerator
las Автор
да, тут я немного не додумал при написании статьи — попробую чуть позже записать видео с примерами из приложения, где можно будет послушать, как это звучит. А вообще — по определенным правилам для конкретной тональности генерируется мелодия, аккомпанемент к ней и партия ударных. Это все преобразуется в последовательность midi-команд, которые, собственно, и исполняются. Основную идею я подчерпнул, кстати, в статье на Хабре, попробую ее найти и сошлюсь.
CYBERPRESENT