Автоматизация громкости аудиоплеера Jquery.Расчет объема позиции между двумя точками - PullRequest
0 голосов
/ 10 февраля 2012

Я пытаюсь реализовать «автоматизацию громкости» в встроенном аудиопроигрывателе jQuery.

Как вы можете видеть из рисунка ниже, у меня есть наложенный линейный график с перетаскиваемыми точками.

Во время воспроизведения звука событие запускается каждую секунду (в настоящее время я могу увеличить частоту при необходимости), которая собирает данные.

Данные, которые я возвращаю, - это позиция звука и громкость (определяемая по высоте «точки» ... а не самой линии.

Это означает, что в настоящее время, несмотря на рендеринг наклона, громкость изменяется только при достижении каждой отдельной точки в песне. (точка, представляющая собой одну 'точку' на линии.

enter image description here

Я решил сделать это таким образом, чтобы улучшить производительность.

Однако использование этого метода означает, что мне нужно выполнить расчет, чтобы определить объем между точками.

Математика на самом деле не моя сильная сторона, и я очень мало помню о моих школьных днях.

Я храню переменные в настоящее время как: -

  • x0 = позиция последней точки
  • x1 = позиция следующей точки
  • y0 = Последняя точка
  • y1 = следующая точка
  • позиция = текущая позиция в секундах

Надеюсь, вышесказанное имеет смысл!

Если я правильно помню, необходимое уравнение как-то связано с вычислением разницы между двумя точками, поэтому я предполагаю, что для этого просто понадобится простое уравнение с использованием содержимого вышеуказанных переменных.

Шкала громкости 0-100. Поэтому очевидно, что точка в верхней части формы волны должна иметь значение объема 100, а точка внизу должна иметь значение объема 0. При этом отдельные точки между ними рассчитываются по требуемому уравнению.

Если кто-нибудь сможет пролить свет на этот вопрос или помочь мне найти решение, это будет очень ценно!

1 Ответ

1 голос
/ 10 февраля 2012

То есть вы хотите найти объем (у) между двумя точками?Как в (position - x0) * (y1 - y0) + y0?

Обратите внимание, что это упрощено на основе того, что x0 и x1 находятся на расстоянии 1 единицы.

Полная информация:

Найти наклон: slope = (y1-y0) / (x1-x0)

Найти% мы находимся между x0 и x1: расстояние = (позиция - x0) / (x1 - x0)

наклон * расстояние покажет нам изменение: изменение = наклон * расстояние

Чтобы найти новое значение, добавьте изменение к последнему значению: y position = change + y0;

Повторная замена всех переменных дает нам: y0 + (((y1 - y0) / (x1 - x0)) * ((позиция - x0) / (x1 - x0)))

Если ваша выборка составляет 1 единицу, вы можете пропустить термин (x1 - x0).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...