У Льоні сьогодні

Визначення BPM силами користувача — яке працює

#Cadencia


Ось так виглядає UI визначення BPM

Отже… як же ж його допомогти користувачу визначити темп пісні?

Я залишив модель “теп на раз”, але з ключовою різницею.

Перша ітерація бачила послідовність тепів як сигнал, який ми перетворюємо на BPM. Більше тепів — краще сигнал… це якщо тепи чіткі. Але більше тепів — більше шансів на помилку. Особливо тому, що пісня — це не бій метронома, та не кожний “раз” ти почуєш однаково.

Оскільки характер пісні змінюється, фактично в нас є шанс задати чітку послідовність, тільки поки грає куплет чи приспів, чи інша рівномірна частина. Розумієш — в моделі “послідовність тепів” є практична стеля якості.

Тому я знайшов іншу модель. Пісня містить послідовність “разів”, та наша задача — її викрити. Тепати можна в будь-який “раз” - не обовʼязково в кожний. Всі “рази”, який відмітить користувач, додають інформації: між двома “разами” завжди є кратний проміжок.

Тоді користувач вільний обрати ті “рази”, де їх добре чути. І від того сигнал стає чистішим!

Ба більше, виходить, що формула впевненості значно виграє, якщо в нас є тепи з початку та з кінця пісні. Бо та ж похибка на великому проміжку значить менше! А оце вже зовсім інший досвід!

Бо раніше було навпаки: навіть маленька похибка в тепах могла протягом цілої пісні повністю зсунути ритм. Тоді доводилося старатися та бути чіткіше. І це я розумів, а як пояснити простому користувачеві?

Можливо, я ще перероблю цей UI, щоб більше спрямовувати користувача до правильних дій — як-от визначення “раз” на початку та кінці пісні. Але в цілому — вже задоволений.