Как научиться танцевать?

Инструкция на техническую тему, которая упростит жизнь разработчику.

Терминология (сначала можете пропустить)

Звуковая волна (звуковые колебания) — это передающиеся в пространстве механические колебания молекул вещества (например, воздуха). В результате каких-либо возмущений (например, колебаний диффузора громкоговорителя или гитарной струны), вызывающих движение и колебания воздуха в определенной точке пространства, возникает избыточное давление (поскольку воздух в процессе движения сжимается), толкающее окружающие слои воздуха. Эти слои тоже сжимаются, что, в свою очередь, снова создает избыточное давление, влияющее на соседние слои воздуха. Так, по цепочке, происходит передача первоначального возмущения в пространстве из одной точки в другую. Тело, создающее возмущение (колебания воздуха), называют источником звука. (Другое объяснение на вики)

Ритм — организация музыки во времени. Ритмическую структуру музыкального сочинения образует последовательность длительностей — звуков и пауз.

Интерференция — усиление колебаний звука в одних точках пространства и ослабление в других в результате наложения двух или нескольких звуковых волн. Когда мы слышим звуки разных, но достаточно близких частот сразу от двух источников, к нам приходят то гребни обеих звуковых волн, то гребень одной волны и впадина другой. В результате наложения двух волн звук то усиливается, то ослабевает, что воспринимается на слух как биения. (Другое объяснение на вики)

Стоячая волна — колебательный (волновой) процесс в распределенных колебательных системах с характерным устойчивым в пространстве расположением чередующихся максимумов (пучностей) и минимумов (узлов) амплитуды. Такой колебательный процесс возникает при интерференции нескольких когерентных волн.

Эээ.. что?
Эээ.. что?

С User Story нам поможет французский прозаик, поэт, джазовый музыкант и певец Борис Виан (цитата из романа “Пена дней”, перевод Л. Лунгиной):

- Принцип стиля скосиглаз, что, впрочем, месье наверное и сам знает, состоит в интерференции двух динамических систем, вибрация которых строго синхронизирована.

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

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

- В самом деле? - с некоторым беспокойством переспросил Колен.

- Таким образом возникает система статических волн*, имеющих, как известно из акустики, равномерные колебания, что немало содействует возникновению особой атмосферы в танцевальном зале.

- Несомненно... - прошептал Колен.

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

оригинале "un système d’ondes statiques", вероятно имеется в виду стоячая волна (см. терминологию). Либо речь о волнах Рэлея. Нам это не так важно сейчас.

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

Мы свяжем движения (танец) со звуковой волной от источника звука (напр. вибрации мембраны). Звуковая волна, создаваемая некоторым колеблющимся телом (мембраной), распространяясь в пространстве, может переносить энергию колебаний другому телу (резонатору, человеку), которое, поглощая эту энергию, начинает колебаться и фактически само становится источником звука (рождение танца). Колебаться можно любой частью тела. Это и есть танец.

Проще и понятней для большинства танцевать, ориентируясь на явно выраженный ритм и такт. Т.е. когда звуковая волна в пиках или повторяется.

Провизуализировать это можно зрительными образами для Winamp, что по сути является визуальным электронным танцем:

Позже, освоясь со звуком, и научившись получать удовольствие от синхронности своих и музыкальных волн, мы будем учиться двигаться. Ведь главными характеристиками танца являются: ритм — относительно быстрое или относительно медленное повторение и варьирование основных движений; рисунок — сочетание движений в композиции; динамика — варьирование размаха и напряженности движений; техника — степень владения телом и мастерство в выполнении основных па и позиций.

В визуализации нам поможет ныне закрытая игровая студия Lionhead Studios (игры Fable, Black & White), которая в далеком 2000 году сделала визуализацию для Winamp в виде медведя (можно скачать). Согласитесь, что если кодом можно научить танцевать медведя, то можно научить танцевать и разработчика!

Пример упрощенного кода, для базовой связки волн, рук и ног:

public class Main { public static void main(String[] args) { // Волны из мелодии, полученные в какой-то момент времени Wave[] waves = {}; Developer developer = new Developer(); // Обрабатываем все волны for (Wave wave : waves) { developer.processWave(wave); } } } // Класс, описывающий волны class Wave { float frequency; float amplitude; } // Класс, описывающий разработчика class Developer { // Обработка волны мозгом public void processWave(Wave wave) { // Если это бас - двигаем ногами if (isBass(wave)) { moveLegs(wave); } // Если гитара, двигаем руками if (isGitar(wave)) { moveHands(wave); } } // Параметры взяты для примера и не соотвествуют реальным public boolean isBass(Wave wave) { return (wave.frequency > 100) && (wave.frequency < 200) && (wave.amplitude > 10) & (wave.amplitude < 20); } // Параметры взяты для примера и не соотвествуют реальным public boolean isGitar(Wave wave) { return (wave.frequency > 200) && (wave.frequency < 300) && (wave.amplitude > 20) & (wave.amplitude < 30); } public void moveHands(Wave wave) { // Двигаем руками, в зависимости от характеристик волны } public void moveLegs(Wave wave) { // Двигаем ногами, в зависимости от характеристик волны } }

Надеюсь, моя инструкция была полезна и облегчит жизнь не только моему знакомому разработчику (который теперь программирует себе танец как боженька), но и множеству других разрабов. 2020 год - отличный год для старта подготовки к дискотеке!

А знаете ли вы?

  • Феномен «захвата ритма», то есть способность улавливать ритм движения и следовать ему, присущ исключительно людям. По мнению норвежских ученых Аре Бреана и Гейра Скейе эта способность развилась на ранних этапах эволюции Homo Sapiens, как приспособительный механизм для увеличения скорости совместного движения.
  • В индийской мифологии царь танца Натараджи (образ Шивы) во время своего мистического танца создает и разрушает Миры и Вселенные. Ритму ударов его стоп вторят колокольчики гунгру, надетые на голени. Танцуя, он задает ритм движения планетам, светилам и всему мирозданию.
11
1 комментарий

Пример кода - это принцип программирования мозга разработчика для обучения танцу. Совсем забыл об этом написать.