Русский
Русский
English
Статистика
Реклама

Музыка

Видеоигры заняли важнейшее место в молодежной культуре, а музыка уходит на второй план

18.02.2021 12:05:10 | Автор: admin


Рокеры и панки, рэйвисты и хип-хоперы кажется, еще вчера музыка была для молодежи важнейшим из искусств, определяла мировоззрение, объединяла и разделяла на субкультуры.
Но всё меняется, и молодежь не исключение. В своем эссе культуролог Шон Монахан утверждает: музыка перестала быть определяющим стержнем молодежной культуры, а ее место заняли видеоигры. И этим уже вовсю пользуются производители товаров и контента, которые целенаправленно выстраивают маркетинг вокруг игр и геймеров.

Как же и почему это происходит? Мы выбрали из эссе главное.

Говорить, что видеоигры внезапно стали мейнстримом в 2020 г., неверно: они им являются уже несколько десятилетий. Однако сейчас игры заняли куда более важное место в поп-культуре, чем когда-либо прежде и не только для геймеров. Да, отчасти это последствие вызванных Сovid-19 отмен и переносов буквально всего. Отчаявшимся маркетологам пришлось срочно искать новые каналы продвижения. Место Коачеллы и аналогичных мероприятий заняли игры типа Animal Crossing. Показательно, что жаждущие народного одобрения политики, раньше выходившие к электорату на танцпол, теперь стали дружно использовать для тех же целей хайповые игры.


В этом видео представитель Демократической партии Александрия Окасио-Кортес играет в популярную Among Us и попутно агитирует за Джо Байдена. Трансляция собрала 438 000 зрителей и показала всем, насколько эффективна площадка игрового стриминга Twitch в качестве инструмента предвыборной агитации в США.

Игры в центре внимания


Конечно, на столь восторженное восприятие видеоигр во многом повлиял карантин, но, на самом деле, он всего лишь обострил тенденцию, которая началась задолго до этого.
Вспомним, как еще в 2019 г. мировые СМИ обошла новость, удивившая многих: для аудитории поколения Z стример PewDiePie оказался не меньшим авторитетом, чем суперпопулярный баскетболист Леброн Джеймс. Потом выяснилось, что совокупная выручка видеоигр в 2019 году ($139 млрд) превысила доход спортивных лиг NFL, NBA, MLB и NHL вместе взятых.
По оценке Newzoo, в 2020 г. индустрия выросла еще на 20%: выручка достигла $ 160 млрд, а количество геймеров во всем мире составило 2,8 миллиарда человек!

image
Распределение и размер аудитории видеоигр в 2020 г.

Совокупный объем инвестиций в сектор геймдев-индустрии по итогам 2020 г. превысил $13 млрд долларов, на 77% больше, чем годом раньше, а количество сделок на рынке перевалило за 600.
Самые фетишизированные продукты прошлого года игровые платформы: Nintendo Switch весной и Playstation 5 осенью. В очередях за ними теперь стоят и селебрити, позирующие рядом с консолями. Атмосфера вокруг выхода must-have продукта, очень хорошо знакомая по айфонам, когда сначала публика возбужденно ждет старта продаж, а потом из-за высокого спроса все возмущенно пишут ну когда же придет мой заказ?!, теперь также очевидным образом сместилась в сторону видеоигр.

image
Фото из твиттера шоу-звезды Линдсей Лохан.

По своим бюджетам ААА-игры догоняют голливудские блокбастеры. Взять хотя бы Cyberpunk 2077, выход которого стал событием года: разработка проекта с участием Киану Ривза и Граймс обошлась в $317 млн., а это не так уж далеко до $478 млн. стоимости Аватара, одного из самых дорогостоящих фильмов в истории. И пусть релиз игры прошел на фоне скандалов с производительностью, зато даже с учетом возвратов к концу 2020 г. было продано 13 миллионов копий!
По прогнозам, в 2021 году рынок продолжит стремительно расти и приблизится к $190 млрд. выручки.

Геймеры на крючке


Тренд растущего интереса к видеоиграм с энтузиазмом подхватили в музыкальной индустрии и других сферах. Производители неигрового контента и товаров активно взялись за игры как инструмент привлечения, заманивания молодежной аудитории. Автор называет это явление gamerbait (буквально приманка для геймеров) и приводит в качестве примера бренд Balenciaga, который не только стилизовал новую коллекцию под эстетику популярных игр, но и саму ее презентацию оформил как видеоигру. Еще один пример геймербейта выступление Трэвиса Скотта в Fortnite. При помощи игры Скотт за один раз собрал аудиторию вдвое больше, чем удалось MTV Video Music Awards 2020. По итогам коллаборации его концерты посмотрели 37,7 миллионов игроков, а гонорар исполнителя составил не меньше $20 млн. И ведь это не какое-то исключение из правил. Так, в ноябре аналогичное мероприятие провели в онлайн-игре Roblox: концерты рэпера Lil Nas X собрали 33 млн просмотров.

image
Концерт Трэвиса Скотта в Fortnite

То, что игры становятся главным ключом к сердцу детей и подростков, уже понимают и в системе образования. В 2016 г. новость о том, что музеи и библиотеки используют Pokemon Go для привлечения посетителей, еще могла удивить. Сейчас же это очень популярный (и эффективный) подход. Университет Монреаль проводит виртуальные туры по Древнему Египту и античному миру на основе игр серии Assassins Creed. Cyberpunk 2077 стал антуражем для олимпиадных заданий по информатике, разработанных для абитуриентов российским Университетом ИТМО. А буквально на днях Университет Теннесси объявил об учебном курсе под названием Red Dead America. Программа курса охватит американскую историю с 1899 по 1911 год, а в качестве иллюстраций будут демонстрироваться материалы из игр Red Dead Redemption.
И похоже, что в ближайшем будущем нас ждет бурная экспансия видеоигр во все сферы культуры, образования и развлечений, где они будут интегрироваться с традиционными инструментами и форматами.

Культурный сдвиг


image
Музыкант Джонни Сильверхэнд ключевой персонаж Cyberpunk 2077.

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

Как недавно заметил основатель студии Brud Тревор Макфедрис, игры заменяют музыку как стержень социальной жизни, и всем старше 30 лет, с кем я общаюсь, от этого некомфортно. Когда-то рок и хип-хоп были основой стиля, а новое поколение вдохновляется киберпанком и фэнтези в играх. Раньше музыкальные площадки были местом, где формировались новые молодежные движения (рок-клубы для бумеров или гранж-бары для поколения X), но теперь поколение Z встречается с друзьями за играми в Интернете, а тусовки перетекли в Twitch и Discord популярные площадки для геймеров. Согласно недавнему исследованию, 91% зумеров мужского пола регулярно играют в видеоигры, 74% считают, что видеоигры помогают им оставаться на связи со своими друзьями, а для 68% игры неотъемлемая часть их личности. Конечно, подростки не перестали любить музыку, но теперь они предпочитают, чтобы она была частью игр.

Безусловно, триумф гейминга происходит на фоне кризиса в музыкальной индустрии: стриминговые платформы платят исполнителям катастрофически низкие гонорары, а Covid не позволяет зарабатывать на живых выступлениях. Но списывать успехи геймдева лишь на трудности в других индустриях неправильно. Если посмотреть на графику таких игровых проектов, как Ведьмак, Call of Duty или Control, становится понятным, что это действительно одни из ярчайших культурных явлений нашего времени, с огромным влиянием на аудиторию.
И хотя многих это тревожит, но если музыка и была важнейшей формой молодежной культуры в прошлом столетии, то в 21 веке ее место займут видеоигры.

Подробнее..

Из однобитной музыки мяубитную

27.03.2021 16:18:35 | Автор: admin
Прошлая статья, посвящённая обучающей плате Meowbit и реализациям Python для неё, завершалась упоминанием неспособности CircuitPython проигрывать музыку одновременно с игрой: писать на Python обработчики прерываний CircuitPython не позволяет, а без этого задержка на время перерисовки экрана (порядка 0.15 с) подвешивает звук. Тем не менее, фоновый звук бывает нужен достаточно часто, и для большинства поддерживаемых плат (100 из 189) CircuitPython включает модуль audioio либо audiopwmio, реализующий фоновый звук родными для платы способами. К сожалению, для Meowbit (и вообще для плат на основе STM32) не реализован ни тот ни другой модуль; но в opensource-проекте это дело поправимое :)


Найдите пасхалку в фото

Прежде всего: почему для проигрывания звука есть два разных модуля с полностью одинаковыми API, и на разных платах поддерживается либо тот, либо другой?

Вот как в аудиоредакторе (например Audacity) выглядит секунды обычного (16-битного)
WAV-файлa:


Значение плавно меняется в пределах примерно от 0.2 до +0.2 условной единицы. Если таким же образом менять напряжение, подаваемое на электродинамический громкоговоритель, то так же плавно будет колебаться мембрана примерно от 0.2 своего максимально возможного отклонения в одну сторону, до 0.2 отклонения в другую сторону. Модуль audioio реализует именно такое проигрывание звука через ЦАП плавно меняет напряжение на выводе, соединённом с динамиком.

Но в Meowbit вместо динамика стоит дешёвая пьезопищалка, неспособная отклонять мембрану в промежуточные положения: она из одного крайнего положения очень быстро переходит в другое крайнее, и остаётся там до следующего перехода. Это можно представить как звук с разрешением в один бит на сэмпл:


Таким способом невозможно передавать изменение громкости звука, но теоретически возможно передать все имеющиеся в нём гармоники если параллельно с 32768-кратным понижением разрешения увеличить во столько же раз (т.е. до сотен мегагерц) частоту дискретизации. Маловероятно, что мембрана пьезопищалки сможет колебаться с такой частотой; но это можно использовать и в свою пользу если научиться переключать напряжение на пищалке, когда мембрана на полпути, то можно издавать звуки промежуточной громкости! Поиск по патентам подтверждает, что люди действительно исследуют возможности использовать пьезопищалку таким образом. Мы в эти дебри углубляться не будем, и оставим обычную для WAV частоту дискретизации в десятки килогерц. Для музыки, где основные гармоники в районе килогерца, этого достаточно; речь, однако, превращается в едва разборчивый шум. Можете сравнить, как воспринимается использованный мной восьмисекундный образец звука, воспроизведённый на однобитной пьезопищалке: вначале оригинал, затем однобитная версия, затем запись Meowbit-а микрофоном.


Модуль audiopwmio реализует проигрывание звука через цифровой вывод посредством ШИМ: однобитная аудиозапись превращается в последовательность задержек между переключением
вывода на противоположное значение.

Итак, общий план реализации audiopwmio для Meowbit таков:

  1. Переводим переданную пользователем аудиозапись в ШИМ-формат (список задержек между переключениями);
  2. В обработчике прерывания от таймера переключаем вывод и настраиваем таймер на задержку до следующего переключения. Этот код можно с минимальными изменениями позаимствовать из стандартного модуля pulseio, реализующего в точности то, что нам нужно переключение вывода в соответствии с переданным списком задержек но не позволяющего коду на Python выполняться параллельно с переключением.

Не сразу было очевидно, что надо позаботиться ещё об одном аспекте реализации буферизации аудио. Мой тестовый восьмисекундный образец занимает 8220502 340 КБ это втрое больше, чем всё ОЗУ Meowbit; следовательно, загружать его в память придётся по кускам. Стандартная реализация audiocore.WaveFile загружает WAV-файл кусочками по 256 байт, что соответствует 128 сэмплам или 5.8 мс времени проигрывания. Это значит, что в среднем каждые 5.8 мс audiopwmio должен будет запрашивать повторное наполнение буфера; нет выхода, кроме как разместить этот вызов в том же самом обработчике прерывания от таймера иначе перерисовка экрана может задержать наполнение буфера на добрую сотню миллисекунд. Проблему это, однако, не решает до конца: что произойдёт, если прерывание от таймера случится во время перерисовки экрана? Экран Meowbit подключён через шину SPI, флеш-диск через неё же, значит обращение ко флешу во время перерисовки экрана всё равно невозможно!

В результате получилась реализация audiopwmio, способная воспроизводить аудиозаписи из памяти (или процедурно генерируемые) в максимально достижимом на Meowbit качестве; но аудиозаписи из файлов воспроизводятся только при отсутствии одновременных с этим обращений к экрану и ко флешу. Для звукового сопровождения несложных игр этого вполне хватит. PR с моей реализацией уже больше недели дожидается ревью, и когда audiopwmio для Meowbit появится в официальной версии CircuitPython неизвестно; но это не мешает любым желающим самостоятельно скомпилировать себе CircuitPython с моей добавкой.



Подробнее..

Перевод Чиптюн-музыка на ATtiny4 и трехцентовом Padauk

10.05.2021 16:07:24 | Автор: admin

Когда я услышал Bitshift Variations in С Minor Роба Майлза 16-минутный фрагмент 4-голосого полифонического аудио произведения мне очень захотелось воплотить такое аппаратно. Реализовать это на любом микроконтроллере слишком уж просто, поэтому я решил взять самый мелкий, какой смог найти ATtiny4. Чуть позже я портировал эту программу на небезызвестный трехцентовый микроконтроллер Padauk PMS150С.

Ах да при этом он полностью уместился в RCA-штекер и автоматически обнаруживает подключение.


Плата ATtiny4, внутренняя сборка и готовое устройство.


Как он работает


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

Генерация музыки


ATtiny имеет довольно мощный таймер/счетчик и выполняет двойную работу, генерируя как ШИМ-сигнал для аудио выхода, так и прерывания для генерации очередного PCM-сэмпла.
Говоря точнее, мы устанавливаем его в 8-битный не инвертированный ШИМ-режим без предварительного делителя и включаем прерывание переполнения. Это означает, что таймер отсчитывает от нуля до 255, используя ту же тактовую частоту 4МГц, что и ядро ЦПУ, ШИМ-выход поднимается от нуля до заданного коэффициента заполнения, и при достижении значения TOP сбрасывается к нулю, вызывая прерывание по переполнению.

Немного быстрых расчетов: самая высокая частота, на которой МК может работать, будучи запитанным от 3В таблетки, равна 4МГц. Эти 4МГц, поделенные на 256 шагов, дают нам базовую частоту ШИМ в 15.625КГц. Слегка откалибровав внутренний генератор, мы можем добиться ее округления до 16КГц. Поскольку частота дискретизации исходного тона равна 8КГц, то новый сэмпл нужно генерировать только раз в два переполнения/прерывания. Это оказывается весьма удобно, так как генерация сэмплов в итоге занимает немногим более 400 циклов.



На этом графике я отразил счетчик, его значение для сопоставления, итоговый выход ШИМ, а также прерывание по переполнению и коэффициент заполнения/выполнение подпрограммы sample, запускаемой этим прерыванием.

Ниже вы видите коэффициент заполнения и выход ШИМ на реальной микросхеме. Здесь отчетливо отражено, что в течение одного прерывания генерируется два сэмпла. (И этот вывод коэффициента заполнения/отладки позднее тоже пригодился, так как позволил откалибровать генератор через отслеживание частоты на осциллографе Rigol).


Канал 1 (нижний) показывает выход отладки, канал 2 (верхний) показывает сигнал ШИМ. Обратите также внимание на отображение частоты в верхнем правом углу.

Обнаружение подключения


Планируя механический дизайн, я понял, что физически кнопку выключения музыки встроить в корпус не смогу (не говоря уже о выключателе с фиксацией). Именно так и родилась идея автоматического обнаружения устройством подключения. В теории здесь все просто: когда оно подключено к приемнику аудио, возникает электрическая связь между аудио выходом и землей. Все что нужно, это регулярно подавать высокий сигнал на центральный контакт RCA-штекера и проверять его на понижение.

С программной стороны мы фиксируем, в каком месте произведения находимся, и входим в режим пониженного энергопотребления, который отключает таймер/счетчик и даже тактовый генератор. В этом состоянии мы ожидаем низкоуровневого (в смысле нулевого напряжения) внешнего прерывания, которое сработает при подключении устройства, после чего запускаем проигрывание.

На практике же все сложнее: типичное сопротивление линейного аудиовхода составляет 20-100кОм, что намного выше, чем у внутренних подтягивающих резисторов ATtiny, хотя это легко решается внешним подтягиванием. Кроме того, функциональность генерации прерывания при смене контактов недоступна на контакте выхода ШИМ, но и это легко обойти, просто закоротив их.

Согласно спецификации, потребление энергии в таком состоянии ниже 0.15мкВ. Примерно с той же скоростью происходит саморазряд таблетки, так что хватить ее должно на годы.

Фильтрация выхода


При использовании базовой частоты ШИМ 16кГц есть один недостаток: она слышима. Изначально я собирался просто это игнорировать, но один друг справедливо убедил меня добавить RC-фильтр нижних частот.

Быстрый и грубый спектральный анализ, сделанный с телефона, подтвердил, что эта частота действительно шумит. Границу среза и кривую отклика я выбрал довольно произвольно (глядя на коробку под SMD-компоненты) около 8кГц, тем не менее с задачей она справляется отлично, так что при заказе итогового списка материалов я придерживался именно ее.


Соотношение сигнал-шум после добавления фильтра существенно улучшилось.

Программное обеспечение


Разобравшись с теорией, осталось только прописать код. Я решил вручную воспроизвести Си программу Роба на ассемблере AVR, отчасти ради забавы, отчасти в качестве (поспешной?) стратегии по оптимизации. У ATtiny нет аппаратного mul/div/mod, и мне потребовалось лишь немного правосторонних множителей/делителей, для чего я написал несколько специальных оптимизированных вариантов.

Начал я с нетронутой программы Си и сначала просто ее упростил, после чего заменил каждую операцию на макрос Си, реализующий соответствующую инструкцию машинного кода. После каждого малейшего изменения я генерировал PCM-поток и сравнивал его с заведомо корректным образцом, чтобы избежать ошибок. Каждое изменение автоматически отправлялось в репозиторий, в результате чего получилось 136 коммитов под именем new version. Только затем я добавил код инициализации и произвел запуск на реальном микроконтроллере.

На этом этапе, сам того не ведая, я допустил ошибку при написании одного из псевдо-ASM макросов: я инвертировал условие ветвления в mod3, в результате чего оно переключалось, когда не должно было, и наоборот. Это привело к невозможности распознавания голосов 3 и 4 на микроконтроллере. Причину ошибки мне удалось обнаружить только год спустя, когда я вновь вернулся к проекту после того, как в simavr, наконец-таки, появилась элементарная поддержка семейства ATtiny 10. Когда я запустил gdb(1), проблема тут же стала очевидной, и для патча потребовалась всего одна инструкция машинного кода.

Гибкие печатные платы



Гибкие печатные платы, которые можно обернуть вокруг батарейки

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

Все эти проблемы на раз решила гибкая печатная плата. Я спроектировал ее так, чтобы она оборачивала таблетку, при этом контакты батарейки находились внутри, а компоненты снаружи. Зажим, сделанный из скобы для бумаги, сдавливает этот сэндвич, обеспечивая тем самым его питание. Сама плата также изолирует батарею, для чего достаточно одного оборота скотча по кругу, и делает этот мини комплект достаточно жестким.

И все же нужно было еще проложить два провода, идущих от платы к точкам пайки на внутренней стороне RCA-штекера. Задача оказалась непростой, и я не сразу додумался, как скрутить две части корпуса штекера, не прокручивая провода. Решением стало максимально глубоко задвинуть плату в корпус и слегка провернуть провода против часовой стрелки, чтобы при закрытии корпуса они, наоборот, развернулись.


Стек слоев в KiCad. PDF-схема.

Портирование на Padauk


При использовании ATtiny меня не покидало ощущение, что я мухлюю: он снабжен сравнительно богатой периферией и содержит много очень гибких регистров (16), которыми можно управлять напрямую. К тому же у меня завалялся самодельный программатор для микроконтроллеров Padauk, который подогнал мне один из участников форумов EEVBlog, а также около 500 штук PMS150C.

Эти микроконтроллеры прославились своей невысокой стоимостью около 3 американских центов за экземпляр при приобретении в сравнительно небольших количествах. За свою цену они неплохо оснащены: ПЗУ на 1024 слова (программируемых один раз), 64 байта статического ОЗУ, 8-битный таймер с ШИМ, (несколько странный) 16-битный таймер, внутренний компаратор и источник опорного напряжения. По мнению некоторых, набор инструкций Padauk во многом следует более старой модели PIC, и большинство его операций происходят в одном накапливающем регистре.

Недостаток же в том, что производитель поскупился на документацию: спецификация не описывает, как мнемоника ассемблера сопоставляется с реальными единицами и нулями, то есть вы должны использовать их проприетарные (и доступные только для Windows) IDE, программатор и внутрисхемный эмулятор. Эта IDE даже не имеет компилятора Си, а использует странный язык, который они зовут мини Си: по сути, это ассемблер с позаимствованным из Си синтаксическим сахаром.

Талантливая группа любителей во главе с js_12345678_55AA, tim_ (cpldcpu) и spth (pkk), невзирая на отсутствие вышестоящей поддержки, создала впечатляющую и полностью открытую цепочку инструментов Си, включая компилятор, ассемблер, компоновщик, дизассемблер, симулятор, программное и аппаратное обеспечение программатора, а также низкоуровневую документацию.


Внутренняя сборка Padauk-версии

Для портирования чиптюнов на PMS150С потребовалось полностью перевести исходный Си-код в ассемблер, чтобы наилучшим образом использовать сжатые требования к циклам (в рамках которых я оставался с трудом: в худшем случае использовалось 507 из 512 доступных циклов). После того, как в процессе поиска правильного способа инициализации периферии я сжег тестовыми программами 5 схем, потребовалось еще всего 2, чтобы добиться полноценной отладки программы.

Итого семь микросхем, но при этом гораздо больше попыток: на деле можно программировать одноразовую память несколько раз при условии изменения только единиц на нули. Так что я оставил немного пространства под векторами сброса и прерывания, подставил новую версию кода и исправил инструкции GOTO, заменив их на NOP и добавив новый переход сразу же после. Скажу честно, я не столь скуп, но на неоднократную возню с ZIF-разъемом ушло бы больше времени, чем на этот обходной вариант.


Выделение некоторых отличий в версиях ассемблера: загрузка нот из памяти

Версия Padauk имеет небольшие отличия в сравнении с версией ATtiny: во-первых, здесь я задействую оба таймера, что позволяет использовать более высокую базовую частоту ШИМ (64кГц) и обойтись без ФНЧ. Во-вторых, внутреннее подтягивание Padauk достаточно высокое, и внешнее уже не требуется. Это означает, что мне удалось добиться полного отсутствия внешних компонентов.

И все же без сложностей не обошлось: t1sn M.n (тест старшего бита в статической ОЗУ и пропуск следующей инструкции) и set1 M.n (установка бита в области статической ОЗУ) работают только для первых 16 адресов; по данному поводу в спецификации толком ничего не сказано (заметил я это лишь потому, что в документации по реконструированным наборам инструкций присутствовало 4-битное адресное поле). В симуляторе микроконтроллера ucism было несколько ошибок, связанных с этими (и аналогичными) инструкциями, что слегка сбило меня с пути (патчи я отправил в список рассылки).

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


Обратите внимание на повышенную частоту ШИМ и более интенсивное использование ЦПУ в сравнении с версией ATtiny.

Я не стал озадачиваться созданием новых печатных плат; у меня оставались варианты без ФНЧ, и я просто оставил внешний подтягивающий резистор неподключенным.

Живое демо



Видео одного полного проигрывания музыки. Начало несколько затяжное, но с 1:35 становится интереснее.

Примечания


Считаю необходимым упомянуть проект Noiseplug от DoJoe. На него я наткнулся при поиске информации по ATtiny и могу сказать, что по своей сути он похож на мой.

Я собрал себе макетную плату из платы-переходника, поскольку шаг ее контактных площадок в точности соответствует одной стороне форм фактора SOT23-6. Вторую сторону я после подключил проводами. В другом, более раннем, варианте макетной платы использовалась миниатюрная адаптерная ATtiny, которую я приклеил на общую панель плат-переходников, чтобы ее расширить. Последнюю из них я представил на 35C3.




Макетные платы

Гибкие платы я заказал с OSHPark.com, и обошлись они примерно по доллару за штуку. Заказ был обработан довольно быстро, правда некоторые из них пришли с дефектами травления.

Подробнее..

Конструктор плейлистов для Spotify

17.01.2021 16:22:22 | Автор: admin

Статья о том, как Spotify Web API (SWA) и платформа Google Apps Script (GAS) позволили превратить библиотеку в гибкий конструктор плейлистов с бесплатным исполнением по расписанию.

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

Ссылки на исходный код и документацию в конце статьи.

Проблема

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

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

В связи с этим появилось желание альтернативы, устраняющей данные недостатки.

Решение

В результате была разработана библиотека для GAS на JavaScript - Goofy. Конструктором её делает возможность запуска на платформе в редакторе или по расписанию (триггерам) без стороннего ПО.

Естественно GAS накладывает свои ограничения, но другого порядка. Например, время исполнения не более 6 минут; количество запросов к внешним API не более 20 тысяч в день. С другой стороны, круг возможностей существенно расширился. Реализованы все функции Smarter Playlists, устранены его недостатки. Появились новые функции.

Алгоритм

Несколько простых примеров, которые можно реализовать с помощью Goofy

  • Объединение личных миксов с удалением ранее прослушанных треков

  • Выявление давно непрослушиваемых треков

  • Сбор новинок отслеживаемых исполнителей

  • Накопление треков обновляемого источника в плейлисте с удалением уже прослушанных

  • Рекомендации Last.fm любого пользователя, топ за период и прочее

Новые возможности

Особое внимание уделю истории прослушиваний. Частое прослушивание музыки без особо активных действий приводят стриминг платформы к повторам. Одни и те же треки приходят изо дня в день. Goofy позволяет удалить ранее прослушанные треки. Однако это сложнее, чем казалось на первых взгляд.

  • SWA дает возможность получить только 50 последних прослушанных треков. Появление 51-ого делает недоступным 1-й.

    GAS имеет выход к Google Drive. Библиотека создает повторяющийся триггер и опрашивает SWA на предмет новых прослушиваний. Если они есть, сохраняет в файл. Таким образом, появляется локальная полная история прослушиваний.

  • Есть другая проблема. Трек считается прослушанным только после 30 секунд. Причем зачастую недавние треки обновляются не сразу или вовсе теряются. Списываю это на "качество" SWA.

    Решение есть и здесь - использовать Last.fm. Реализовано два подхода. Во первых, можно просто запросить недавние прослушивания и удалять совпадения по названию трека. Во вторых, можно выполнить поиск трека в Spotify и сохранить его в файл на Google Drive. Тем самым получая историю прослушиваний от Last.fm готовую к работе со Spotify.

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

Пример

Нужно выполнить установку (копирование в GAS) и настройку (выдача разрешений, ключи доступа). Все подробно есть в документации.

1) Простой пример: получить любимые треки, взять пять случайных и добавить в плейлист.

Далее графическими средствами GAS создаем триггер. В результате, например, раз в минуту плейлист будет обновляться пятью случайными треками.

function createHelloPlaylist() {    let tracks = Source.getSavedTracks();    Selector.keepRandom(tracks, 5);    Playlist.saveWithReplace({        name: 'Hello, playlist',        tracks: tracks,    });}

2) Выявить любимые треки, которые не были прослушаны более чем месяц.

function templateSavedAndForgot(){    let recentTracks = Source.getRecentTracks(2500);    let savedTracks = Source.getSavedTracks();     Filter.removeTracks(savedTracks, recentTracks);    let startDate = new Date('2006-01-01');    let endDate = Filter.getDateRel(30, 'endDay');    Filter.rangeDateAbs(savedTracks, startDate, endDate);    Selector.keepRandom(savedTracks, 20);        Order.sort(savedTracks, 'meta.added_at', 'asc');    Playlist.saveWithReplace({        name: 'Любимо и забыто',        tracks: savedTracks,        randomCover: 'update', // установить случайную обложку плейлиста    });}

3) Получить треки альбомов и синглов отслеживаемых исполнителей за неделю.

function createNewRelease() {    const playlistId = 'abc';    let tracks = Source.getArtistsTracks({        artist: {           followed_include: true         },        album: {           groups: 'album,single',           release_date: { sinceDays: 7, beforeDays: 0 }         },    });    Order.shuffle(tracks);    Combiner.push(tracks, Source.getPlaylistTracks('name', playlistId));    Filter.removeTracks(tracks, RecentTracks.get(3000));    Filter.matchOriginalOnly(tracks);        Playlist.saveWithReplace({        id: playlistId,        name: 'Новые релизы',        tracks: tracks,        randomCover: 'update',    });}

Ссылки

Документация писалась с ориентиром на пользователя, который не знаком с программированием. Чтобы дать возможность использовать Goofy через копипаст шаблонов и примеров.

Исходный код на GitHub, включая форум.

Подробнее..
Категории: Javascript , Api , Музыка , Spotify , Google apps script , Last.fm , Gas

Практическое использование автогенерации музыки

12.04.2021 10:16:29 | Автор: admin

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

В данной статье описывается реализация авто-аккомпанимента для аккордовых прогрессий.

Идея

Сделать возможность подобрать и прослушать звучание аккордов в разных стилях. Работать все должно просто, желательно поменьше кнопок и пунктов меню.

Реализация

Как выглядит веб-версия можно посмотреть здесь:

Как видно, кнопок достаточно много, но гораздо меньше чем у подобных программ.

Сделано всё на JavaScript, поэтому хорошо работает как в браузере, так и в Android-приложениее собранном с Cordova.

Автогенерация

Автогенерации музыки несколько сотен лет (см. https://ru.wikipedia.org/wiki/Музыкальная_игра_в_кости ). Обычно используются наборы паттернов (рифов или музыкальных фраз) которые транспонируют под выбранные тональности.

Для воспроизведения используются 4 стандартные в современной музыке линии:

  • Drums - барабаны, задают ритм

  • Bass - басовая линия

  • Lead - мелодия или рифы

  • Pad - долгие звуки (контрапункт) для окраски аккордов

Подготовка паттернов это достаточно сложная задача. Они должны храниться в виде ступеней лада для удобного транспонирования. Для каждой линии подготовлено по нескольку десятков паттернов с разными инструментами.

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

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

Звук

Сервис для музыки должен хорошо воспроизводить музыку, что естественно.

В программе использовался набор сэмплов https://github.com/surikov/webaudiofont . Он содержит сотни инструментов, есть 10-ти полосный эквалайзер, ревербератор, динамический компрессор. Всё работает из JavaScript в любом браузере и не требовательно к ресурсам.

При первом старте может играть с лагами т.к. инструментов относительно много и они кешируются несколько почти минуту.

UX/UI

На главном окне всего 4 кнопки по которым можно менять генерируемые паттерны в прогрессии. Тапнуть - выбрать случайный паттерн, повернуть - выбрать какой-то конкретный фрагмент.

Слайдером можно выбрать одну из готовых прогрессий.

По кнопке с шестеренкой можно открыть окно с настройками (громкость, темп, редактирвоание отдельных аккордов и т.п.):

Выглядит всё достаточно лаконично, но не в ущерб функциональности.

Импорт

По кнопке [Аа] можно вставить собственную прогрессию. Например скопировать из учебника или со страницы сайта.

Однозначного стандарта на запись аккордов нет, придется парсить различные варианты. Примеры записи

  • AmBdimCDmEmFG

  • vi - IV - I - V

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

Экспорт

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

В нижней панели есть кнопка для отправки редактируемой прогрессии в Твиттер, ВКонтакте и тп

Для корректного отображения превью поддерживается протоколы Open Graph и Twitter Cards.

Результат

Веб-версию можно запустить здесь - https://zvoog.app/RockDice/main.html

Приложение для Android доступно здесь - https://play.google.com/store/apps/details?id=rockdice.chord.progression

PS

Если есть какие-то вопросы по генерации или Web Audio API - можно спрашивать в комментариях.

Подробнее..

Musiphone децентрализованный музыкальный плеер

22.04.2021 16:18:43 | Автор: admin


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


Свой рассказ я бы хотел поделить на две части:


1. Плеер изнутри (musiphone, museria-player)


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


const Node = require('musiphone').Node;(async () => {try {const node = new Node({port: 4000,hostname: 'localhost',musicStorageAddress: 'storage.museria.com:80'});await node.init();}catch(err) {console.error(err.stack);process.exit(1);}})();

const Client = require('musiphone').Client;(async () => {try {const client = new Client({address: 'localhost:4000'});await client.init();const title = 'Playlist title';const songs = ['Onycs - Eden','Onycs - Shine','Onycs - Timeless'];// Add the playlistconst response = await client.addPlaylist(title, songs);// Get the playlistconst playlist = await client.getPlaylist(response.hash);}catch(err) {console.error(err.stack);process.exit(1);}})();

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


Надо держать в голове, что система не гарантирует перманентности хранения данных, поэтому для большей надежности вы можете сохранять все также и в файлы. Об этом поподробнее будет во второй части.


Структура данных в хранилище определена metastocle. Поэтому в этой части рассказывать много не получится. Для углубления можно почитать статью о ней.


2. Плеер извне (сайт, android приложение)


Снаружи плеер это сайт и приложение для андроид (честно скажу, мало на каких версиях и устройствах тестировал). Несмотря на не очень большую ныне популярность и очевидные проблемы, выбор пал на cordova, поскольку она удовлетворяет основным требованиям к проекту и сильно упрощает и ускоряет разработку.


Интерфейс везде примерно одинаковый, поэтому разберем все на примере сайта.


Создание и сохранение плейлиста в сеть.



Вначале вы попадаете на интерфейс с бобром и неактивной кнопкой "NEW PLAYLIST". Это означает, что сейчас идет создание нового плейлиста. Чтобы добавить песню, нужно найти ее в музыкальном хранилище, используя поле ввода слева. Если нужной песни там нет, то вы можете сами добавить ее, перейдя по ссылке "MUSIC STORAGE" сверху, тем самым вы поможете и себе и другим людям, которые в дальнейшем будут ее искать.


Для примеров будут использоваться рандомные песни, разрешенные для свободного распространения и прослушивания. Давайте поищем "Onycs Eden"



В хранилище нашлось пару вариантов, можно их прослушать и добавить нужный, нажатием на плюсик. Добавим несколько песен.



Теперь у нас три песни в плейлисте. По ним можно производить поиск, сортировать, перетаскивая и.т.д. Коричневое предупреждение означает, что были сделаны какие-либо изменения и если не сохранить их в сеть, то они исчезнут после очистки localStorage.


Попробуем сначала сохранить все в сеть. Для этого нажимаем "SAVE TO WEB".



Ввели название и сохраняем.



Теперь видно, что появился таб с названием плейлиста, где мы можем его удалить или сохранить все содержимые песни в кэш браузера/телефона. То же самое, кстати, как видно, можно сделать и с каждой отдельной песней, используя иконки справа. С плеером можно работать без интернета, если у вас есть закешированные треки.


Также мы видим, что исчезло коричневое предупреждение и появилось синее табло, в котором у нас ссылка на плейлист. Вы можете дать эту ссылку любому человеку, перейдя по ней, он увидит тоже самое. Создадим еще один плейлист. Для этого нажимаем "NEW PLAYLIST". Повторяем те же шаги и получаем:



Видим уже два плейлиста, а также сам плеер, который появился после нажатия на блок с песней.


Сохранение плейлистов в файл
Для большей надежности вы можете сохранять плейлисты в файлы. Для этого нажимаем "SAVE TO FILE". Файл будет сохранен в общепринятом формате m3u и может быть загружен и прослушан в любом другом плеере.


Загрузка плейлистов
Чтобы загрузить плейлист, нажимаем "LOAD PlAYLIST".



В модальном окне у нас есть два варианта. Мы либо загружаем по ссылке, либо из файла. В первом случае существует два типа ссылок:


  • Статическая ссылка. Это обычная ссылка с хэшем на плейлист в хранилище: http://player.museria.com:80/musiphone/3deeb6052c5a46c05d6bec2cab5bade9 Напрашивается вопрос, зачем ее грузить через форму, если можно просто по ней перейти. Дело в том, что во-первых это нужно для мобильной версии, а во вторых узлы относительно которых создается ссылка рандомные. Это может быть неудобно когда вы уже настроили свое окружение на каком-то хосте, ведь вся временная информация хранится в localStorage. Поэтому переходы по таким ссылкам удобны, чтобы ознакомится с плейлистами, но чтобы формировать свое пространство нужно работать с интерфейсом какого-то одного узла, например, дефолтного: player.museria.com


  • Динамическая ссылка. Такая ссылка не связана с хранилищем, она должна содержать путь к любому валидному m3u файлу/ответу сервера в интернете. Содержимое будет автоматически трансформировано в плейлист приложения. Каждые 10 секунд будет происходить новый фоновый запрос по этой ссылке, на случай, если вдруг данные изменились и нужно обновить список. Динамическая ссылка проебразуется в следующий вид, для того, чтобы ею можно было также делиться: http://player.museria.com:80/musiphone/external:someUrlHash



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


Конфиги
Все, что вы настраиваете в плеере хранится в localStorage. Чтобы сохранить эту информацию в файл(json), используйте кнопку "SAVE CONFIG", для загрузки "LOAD CONFIG". Вы можете настраивать различные группы плейлистов, уровень громкости плеера и прочее, создавая разные конфиги. Вот, например, вам конфиг из примеров в этой статье.


Вы можете помочь проекту, запустив хотя бы один узел для музыкального хранилища у себя на сервере пространством 50-1000гб, от 2гб оперативки, 2 ядра. Чем больше узлов, тем больше песен будет доступно.


Либо узел для сети плеера: от 300 мб свободного пространства, 1гб оперативки, 1 ядро. Больше узлов дольше живут ссылки.


Группа в телеграм на английском, либо сразу пишите мне в личку ortex

Подробнее..

Зачем инженеру начинать танцевать танго

15.02.2021 22:09:28 | Автор: admin

Примерно раз в неделю мой вечер выглядит так: я кладу в сумку симпатичную сорочку или две, красивую пару обуви и приезжаю в парк с открытой верандой, ресторан или клуб. Там уже собрались несколько десятков хорошо одетых мужчин и женщин, я быстро переодеваюсь и присоединяюсь к ним. С кем-то я знаком, мы тепло обнимаемся и обмениваемся парой слов за жизнь. Работает бар: можно взять бокал вина, коктейль или сок. Играет несколько старомодная, но красивая и ритмичная музыка. Вот она меняется, я слушаю первые такты, обвожу взглядом помещение, выбираю самую эффектную женщину и пытаюсь поймать её взгляд.

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

Ключевое слово тут "социальное". Это не спорт (бывают спортивно-бальные танцы, в программу которых входит латина, и в её числе танго), не фитнес, не фольклорный кружок. Социальные танцы это хобби, которым занимаются миллионы людей во всём мире, и сейчас я вам расскажу, почему это идеальное занятие для аудитории Хабра: инженеров-разработчиков ПО, тестировщиков, SRE и прочих, кого ещё недавно снисходительно называли nerds и geeks (пока наши компании не стали получать миллиардные оценки, а мы сами - становиться миллионерами в те самые 30).

Ещё один важный признак социальных танцев они танцуются в парах, где есть роли ведущего и ведомого, leader и follower (вот во что, кстати, надо было переименовывать неполиткорректные master и slave). Пары эти формируются экспромтом: в танго есть понятие кабесео/мирада, когда потенциальные партнёры встречаются взглядами, кивают друг другу, партнёр подходит к партнёрше и приглашает её жестом на танцпол. В других социальных танцах наверное есть свои, более или менее формальные способы договориться о танце. Сами социальные танцы в значительной мере импровизационные, в них, конечно, есть отдельные фигуры и связки, но как именно и в каком порядке их компоновать ведущий в паре решает в процессе танца, исходя из музыки, своего настроения и наличия свободного места на танцполе.

Очевидно, что без подготовки просто прийти и начать танцевать не получится всем социальным танцам надо учиться, каким-то дольше, каким-то быстрее. Говорят, что на Кубе учат танцевать сальсу за две недели, а туристов наверное и вовсе за 2-3 дня, но типичное время обучения что танго, что сальсе, что разновидностям свинга от трёх до шести месяцев. В этот момент считается, что ученики уже могут сносно танцевать друг с другом и другими танцорами начинающего уровня и получать от этого удовольствие. Путь от начинающего к продолжающему и продвинутому уровню может занимать несколько лет, но вообще у этого процесса нет конца: всегда можно улучшить базовую технику, выучить новые фигуры, связки и целые разновидности танца.

Таким образом, типичная неделя ученика в группе социальных танцев состоит из двух групповых уроков по полтора часа и минимум трёх часов самостоятельной практики, без которой уроки практически не имеют смысла: на уроках мы только усваиваем материал, а для механического запоминания требуется его многократное повторение. Помимо уроков и практик вам придётся хотя бы минимально потратиться на одежду и обувь. Со временем вы захотите посещать более дорогие семинары и интенсивы и даже брать частные уроки (я со своим более чем десятилетним стажем продолжаю это делать регулярно), а также покупать или шить на заказ танцевальную "экипировку". Ради чего, спрашивается, такие вложения денег, и, что важнее, времени? И почему именно работникам сферы IT я так настойчиво рекомендую этим заниматься?

В первую очередь, социальные танцы это замечательный способ социализации (каламбур намеренный). На уроках и практиках, а также на милонгах (так называются танго-вечеринки), сальсатеках и вечеринках других танцев встречаются самые разные люди, с которыми вас будут объединять общие интересы, темы для бесед, и это прекрасно как для удовлетворения базовой потребности в общении, так и для заведения новых полезных контактов, а также, last but not least, знакомств с противоположным полом. Женщины в социальных танцах отрываются по полной по части платьев, обуви, причёсок и макияжа: всё, чего им иногда не хватает в повседневной жизни, они могут в полной мере воплотить на танцполе, поэтому с непривычки глаза разбегаются, а пульс учащается до легкой тахикардии. Ритуалы выбора партнёров и партнёрш изрядно напоминают аналогичные гендерные ритуалы флирта и соблазнения, а сам пятнадцатиминутный танец может выразить без слов множество эмоций и помогает узнать друг друга лучше, чем переписки в Тиндере или свидания в кофейнях. Впрочем, перейти от танца к непринуждённой беседе проще простого: напоминаю, работает бар!

Это снимок с настоящей московской милонги, взят с сайта LocalWayЭто снимок с настоящей московской милонги, взят с сайта LocalWay

(не прерывайте чтение на предыдущем абзаце, это не все ништяки социальных танцев!)

В нашей среде технарей доминирует так называемое "левополушарное" мышление, основанное на анализе, логике, решении проблем и алгоритмах. В этой связи "правополушарные" функции эмоции, интуиция, образное мышление, восприятие искусства у нас развиты меньше, и чем дальше мы продвигаемся в своей карьере тем этот дисбаланс сильнее. Социальные танцы прекрасный способ прокачать своё "правое полушарие": научиться слушать и слышать музыку, воспринимать и выражать эмоции и импровизировать. Это бесценные навыки, которые несчётное количество раз пригодятся вам в самых разных жизненных ситуациях, от движения в плотном потоке людей до рабочих совещаний и деловых и личных отношений.

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

Но и это ещё не всё! Третий кит танцев это физическая форма. На первый взгляд кажется, что большинство социальных танцев, в отличие от бально-спортивных, особых усилий не требуют, особенно если речь об аргентинском танго, а не буги-вуги или линди-хопе. Но впечатление это обманчиво: музыка бывает быстрая, фигуры и связки сложные и требующие определённой ловкости, а также много сил требуется на сохранение баланса (стопы и голеностоп), удержание своей оси (мышцы спины и корсетные мышцы), объятия с партнёршей (мыщцы рук). Каждый шаг в танго акцентирован и, начинаясь от пола, заканчивается в точке контакта пары, задействуя все мускулы по дороге. И так полтора часа урока, два часа практики или 3-4 часа милонги!

Углублённая работа над техникой танца и базовыми техниками баланса, шага, оси и объятия приводят к росту телесной осознанности (понимания, как работают тело и отдельные его части) до уровня продвинутых адептов пилатеса, бодибилдинга и даже йоги. Некоторые танцоры и особенно преподаватели танцев органически развиваются в направлении телесной психотерапии и эмбодимента (гуглите, текст и так большой). Уже с продолжающего уровня танцоры получают бонусом хорошую осанку, лёгкий и энергичный шаг, а также улучшение имиджа и повышение самооценки, и с опытом это всё только прогрессирует.

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

Во-первых, на мой взгляд, именно в аргентинском танго из всех социальных танцев больше всего импровизации и меньше всего заученных связок и "дорожек". Как минимум именно в танго это ценится выше всего. Это связано с традициями аргентинских милонг, где плотность пар на квадратный метр пола иногда бывает такой, что яблоку негде упасть, и умение партнёра использовать всё доступное пространство или вообще разнообразно двигаться на одном месте было признаком мастерства.

Во-вторых, в танго больше всего сложных эмоций и чувств. Нормой для танго является близкое объятие, когда корпуса партнёра и партнёрши плотно прижаты в районе груди. Мы фактически танцуем, обнявшись! Чувствовать микродвижения друг друга, деликатно касаться ступнями, слышать дыхание, замирать или срываться с места в унисон для меня бесценно. Ну и просто обниматься с другими людьми полезно для здоровья (да, есть научные исследования).

В силу этого, танго обычно танцуют люди эмоционально зрелые, умеющие выражать своё настроение и ценить чувства других. В среде танго очень мало "достигаторов", людей, чьи помыслы направлены на произведение внешнего эффекта: ведь бльшая часть танца у нас происходит внутри пары. В то же время действует правило "что происходит на танцполе остаётся на танцполе", и после чувственной на грани эротизма танды (четыре мелодии, которые танцуются подряд без смены) мы с партнёршей можем посмотреть друг на друга и удовлетворённо разойтись в разные стороны, чтобы через 15 минут испытать такую же (или совершенно другую) гамму эмоций с другими людьми.

А это уже фото вашего непокорного слуги в эмоциональный момент танцаА это уже фото вашего непокорного слуги в эмоциональный момент танца

Лично для меня не последнюю роль играет такая штука, как танго-туризм. Аргентинское социальное танго так широко раскинулось по планете, что танцующие тусовки есть практически в любом крупном городе мира, кроме стран, где телесный контакт между малознакомыми людьми считается неэтичным или вообще запрещён. Отправляясь в любую поездку, я кидаю в сумку пару танцевальной обуви, и практически уверен, что если захочу пойти потанцевать без труда найду себе такую возможность, как это много раз бывало в Израиле, на Кипре, в Турции, Греции, Хорватии, Италии, Франции, Испании, Германии, Дании, США, да где только не бывало. До коронавируса по всему миру, и в том числе в России и Беларуси проводились танго-фестивали, включающие как просто милонги, так и мастер-классы маэстро мирового уровня. Это было отличным поводом выбрать место для очередного отпуска: и город посмотреть, и вечером всегда есть чем заняться. Питер, Нижний, Челябинск, Минск, Стамбул, Неаполь, Генуя, Барселона вот только некоторые места, где я посещал отличные эвенты и знакомился с классными людьми.

И напоследок: когда базовые движения затанцованы до автоматизма, а нужные группы мышц постоянно находятся в тонусе, требования к физической форме становятся не такими острыми, как в начале пути. В результате танго можно танцевать и в достаточно преклонном возрасте 60-70 лет, в отличие от остальных социальных танцев, где такое скорее исключение. На милонгах в Аргентине, где танго-культура наиболее жива и интегрирована в общество, не будет сюрпризом встретить танцоров 80 лет и даже старше. Просто посмотрите, как великий Карлос Гавито в почти 60 лет танцует с 35-летней Марселой Дюран под музыку Освальдо Пульезе. Это шоу стало одним из катализаторов моего прихода в танго, а мелодия до сих пор одна из самых любимых:

Теперь у вас, наверное, остался один вопрос: с чего начать свой путь в социальные танцы, как понять, моё это или нет? Если статья вызовет интерес я напишу продолжение об этом и многом другом, что встретится на пути социального танцора, а также поделюсь личным опытом. А пока вместо ссылки на продолжение ссылка на открытый урок, который пройдёт 19 февраля (пятница) в 20:00 в московской студии El Gato Tango в Армянском переулке, где я занимаюсь бльшую часть своей танго-жизни и которую, разумеется, от души рекомендую. Преподаватели расскажут об истории и современности танго, покажут танцевание в разных стилях и под разную музыку, а под конец поставят желающих в пары и покажут несколько простых движений в учебном объятии.

Подробнее..

Как я делаю цифровую минигитару. Часть 2

08.03.2021 14:16:44 | Автор: admin

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

Напомню какие требования к девайсу я поставил, когда начинал разработку:

  • Устройство должно имитировать гитару с 6-ю струнами и 12-ю ладами на грифе

  • Должно быть компактным, в идеале складным, чтобы можно было брать его с собой куда угодно

  • Должно подключаться ко всем популярным осям Android, IOS, Windows, Linux, MacOS и определяться там как MIDI устройство без каких-либо драйверов

  • Работа от аккумулятора

  • Подключение должно производиться без проводов по Bluetooth Low Energy (но раз уж там будет USB разъем для зарядки, то и по проводу пусть тоже подключается)

  • Возможность сразу начать играть, без необходимости в долгих тренировках по адаптации кистевых связок

  • На каждой струне и каждом элементе грифа должно быть по светодиоду, чтобы можно было запустить табулатуру мелодии, и гитара сама показывала куда нужно прикладывать руки

  • Возможность использования основных техник игры на гитаре: hummer on, pull off, slide, vibrato

  • Задержка передачи midi команд не более 10мс

  • Все должно собираться из подручных материалов без сложных техпроцессов и дорогой электроники

Реализовать мне все это удалось, и даже больше. Был дополнительно интегрирован акселерометр для управления параметрами фильтрации звука наклоном гитары и вибромотор (правда, я до сих пор не придумал зачем).

На момент написания предыдущей статьи выглядело оно так:

Было принято решение пытаться делать стартап и выходить на кикстартер.

И так, что было дальше?

Следующим шагом стал стандартный этап поиска pre-seed раунда инвестирования. Деньги нужны были на доработку и изготовление нового прототипа, проведения пиар кампании и оплату юридических манипуляций (для участия на кикстартере необходимо юр. лицо в США со всеми вытекающими организационными тратами). Эту задачу нам с моим партнером, отвечающим за бизнес процессы, удалось решить за 2 месяца.

Позиционирование

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

Профессиональные гитаристы отнеслись к девайсу ожидаемо скептически. И я их полностью понимаю, это не замена настоящей полноценной гитаре. Это девайс для применений, в которых важны портативность, универсальность, простота, возможность играть в наушниках и т.д. Сидишь, например, в самолете, вокруг шум, суета, плачущие дети, кислородные маски выпадают. Спать невозможно. И тут внезапно наступает вдохновение, достаешь девайс, надеваешь наушники и записываешь новый трек.

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

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

Конкуренты

Есть на этом рынке и конкуренты. Мы купили по экземпляру каждого для оценки.

1. Artiphon - панель, чувствительная к нажатию, по форме напоминает гитару, но позиционируется скорее как настольная клавиатура.

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

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

3. Jamtik - игрушка с 7-ю ладами на батарейках. Сыграть на ней не удалось даже В траве сидел кузнечик.

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

Теперь самое интересное новый прототип.

На основе испытаний старого прототипа, конкурентов и личных предпочтений, я решил расширить функционал девайса и добавить несколько пунктов к требованиям:

  • Конечно, RGB подсветка

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

  • Детектирование силы нажатия на сенсоры грифа для реализации стандартных гитарных техник игры

  • Встроенный синтезатор со встроенной библиотекой инструментов и разъем Jack 3.5мм для подключения наушников или внешних колонок. Встроенные динамики делать не стал добиться хорошего звучания было бы слишком сложно и дорого

  • Мобильное приложение со встроенным качественным синтезатором и функционалом обучения

  • Пады с подсветкой для записи лупов

  • Упоры на деке и удобного удержания сидя и стоя, крепления для ремешка

Корпус

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

Основная задача - сделать девайс таким, чтобы был применим мануальный опыт игры на настоящей гитаре. Были проработаны расстояния между ладами, механика струн, геометрия деки и равесовка. Пока что это только рендеры корпуса, но изготовление прототипов уже идет полным ходом.

Электроника

Электронику пришлось разделить на 4 платы:

  • Гриф

Адресные RGB светодиоды подключены последовательно к одной ноге STM-ки. Пришлось повозиться с двойной буферизацией и выводом данных через DMA 100 раз в секунду. Зато, теперь оно работает очень быстро и можно запускать цветные визуальные анимации на поверхности грифа.

  • Плата с падами и подпружиненными контактами для соединения с грифом в разложенном состоянии гитары

  • Основная плата со струнами, мозгами, силовой частью, радио частью, синтезатором и датчиками

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

  • Плата с разъемами USB type-C, Jack 3.5мм и тремя индикаторными светодиодами

Мобильное приложение

После выкладывания предыдущей статьи, мне написал мобильный разработчик Юрий Дубовой с предложением помочь в разработке приложения под iOS.

Мы сформировали протокол общения гитары с приложением и разбили его на несколько интерфейсов:

  • Midi команды, разумеется, по умолчанию передаются по стандартному BLE-Midi интерфейсу. Таким образом, к приложению при желании можно будет подключить и другие midi устройства, например, клавиатуру

  • Опционально поддерживается прием midi команд и по проводному USB-Midi интерфейсу. Это будет полезно для старых телефонов без поддержки BLE, а также в случае необходимости сокращения задержки до минимума (порядка 5мс)

  • Отдельный кастомный BLE сервис для передачи уникальных команд, связанных с управлением светодиодами, режимами работы девайса, синхронизацией состояния и т.д.

  • Стандартный BLE battery service для передачи уровня заряда аккумулятора. Он поддерживается на уровне операционной системы и, в случае в виндой, даже отображается соответствующая иконка в панели устройств

Приложение разбито на несколько экранов, соответствующих разным режимам работы:

Свободная игра

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

Игра по табулатурам

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

Обучение

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

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

Теперь играть на ней можно тремя разными способами:

  1. Подключение через BLE MIDI протокол к телефону или компу, где девайс распознается как миди устройство, и игра через внешние виртуальные синтезаторы (Ableton, FL studio, Garage Band и т.д. или наше приложение)

  2. То же самое, но с подключением через USB MIDI (работает со всеми хостами, которые я проверял Android, IOS, Windows, MacOS, Debian)

  3. Игра внутренним синтезатором, с подключением наушников или внешней колонки напрямую в гитару. В этом случае звук будет не самым Hi-Fi, но вполне приемлемым для игры для себя

Интересно, что можно играть всеми тремя способами одновременно, может кому-то пригодится.

Завершение

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

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

Спасибо за внимание! Буду рад обратной связи в комментариях.

Подробнее..

Популярность BPM в разных жанрах музыки. Анализ скорости исполнения 500 лучших песен

02.03.2021 02:04:15 | Автор: admin

Несколько лет назад, занимался изучением теории музыки, продавал и писал аудио-инструментал для аренды или заказов. Изначально, процесс явно творческий, но вскоре, мой интерес к коммерческой части превысил и возник вопрос: В каком же темпе создавать ритм музыки?.

Мною была замечена тенденция вариаций темпа популярных песен одного жанра, поэтому идея анализа крупной выборки лучших композиций, для определения популярного [часто: самого продаваемого] диапазонатемпа исполнения, не покидала с тех пор

BPM [в музыке] показатель, для определения скорости исполнения композиции, путём измерения количества тактовых долей в минуту.


1: Пролог

Устанавливаем Matplotlibи Pandas с необходимыми зависимостями через pip-менеджер в консоли/терминале.

python -m pip install -V matplotlib и pip install pandaspython -m pip install -V matplotlib и pip install pandas

Создаём директорию, а потом виртуальное окружение для проекта. После, подключаем библиотеки в IDE [в моём случае: PyCharm].

File Settings Project: [...] Python InterpreterFile Settings Project: [...] Python Interpreter

2: BPM

BPM будем вычислять через функцию Detect tempo в FL Studio и через сайт tunebat.com

ПКМ по верхней левой иконке на звуковой дорожке Detect tempo Выбрать диапазонПКМ по верхней левой иконке на звуковой дорожке Detect tempo Выбрать диапазон

3: DataSet

Начинаем создание DataSetа [выборки-коллекции данных] в Excel, для каждого жанра. Экспортируем в CSV-формат с настройками разделителя запятой. Следующие CSV-файлы создавал в IDE, так удобнее. Выборки перемещаем в директорию, где находится файл самой программы.

В первой строке CSV-файлов указываются параметры, которые разделяются запятыми. Следующие строки содержат уже значения этих параметров. При окончательной проверке, DataSet должен последовательно содержать данные: названия трека, BPM и год выхода композиции. Будем использовать информацию выборки в сто песен, для каждого жанра из выбранных пяти.

Параметры: name название трека; bpm темп; year год релизаПараметры: name название трека; bpm темп; year год релиза

4: Rap построение точечной диаграммы и гистограммы

Выборка взята здесь: rollingstone.com/100-greatest-hip-hop-songs-of-all-time
Сам CSV-DataSet: github.com/Rap.csv

На основе информации DataSet'а, создаём точечную диаграмму [Scatter Plots] для изучения взаимосвязи между BPM и годом выпуска, а также для отображения концентраций при ранжировании данных.

Видно, что с 1980 по 2005 гг. основным темпом был диапазон в 90-105 BPMВидно, что с 1980 по 2005 гг. основным темпом был диапазон в 90-105 BPMКод точечной диаграммы с комментариями
from matplotlib import pyplot as plt                              # Первый каноничный импортimport pandas as pd                                                    # Второй каноничный импорт для обработки DataSet'аplt.style.use('fivethirtyeight')                                         # Назначаем стилистику визуализацииdata_set = pd.read_csv('Rap.csv')                               # Считываем данные SCV-файла с DataSet'омbpm = data_set['bpm']                                                  # Переменная, для параметра BPM в каждой строкеyear = data_set['year']                                                  # Переменная, для параметра "год релиза" в каждой строкеplt.scatter(                                                                     # Построение точечного графика и его настройкаbpm, year,                                                                   # Данные для осей x и yc=bpm,                                                                        # Привязка цвета к нужной осиs=bpm*1.5,                                                                  # Зависимость размера точкиcmap='gist_heat',                                                        # Цветовая карта графикаedgecolor='black',                                                       # Цвет контура точкиlinewidth=.7                                                                 # Толщина контура точки)bar = plt.colorbar(                                                          # Построение шкалы BPMorientation='horizontal',                                            # Ориентация шкалыshrink=0.8,                                                               # Масштаб шкалыextend='both',                                                           # Скос краёв шкалыextendfrac=.1                                                           # Угол скоса краёв)bar.set_label('Шкала ударов в минуту', fontsize=18)   # Подпись шкалыplt.title('Популярность скорости '                                  # Заголовок графика  'исполнения в Rap\'е ', fontsize=25)plt.xlabel('BPM', fontsize=18)                                         # Ось абсциссplt.ylabel('Год релиза', fontsize=18)                               # Ось ординатplt.tight_layout()                                                              # Настройка параметров подзаголовков в области отображенияplt.show()                                                                        # Вывод на экран

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

Самый популярный диапазон: 80-100 BPMСамый популярный диапазон: 80-100 BPMКод гистограммы без комментариев
import pandas as pdfrom matplotlib import pyplot as pltfrom collections import Counterplt.style.use("fivethirtyeight")data_set = pd.read_csv('Rap end.csv')index = data_set['number']ranges = data_set['bpm_range']counter = Counter()for index in ranges:counter.update(index.split(';'))range_bpm = []value = []for item in counter.most_common(100):range_bpm.append(item[0])value.append(item[1])range_bpm.reverse()value.reverse()plt.barh(range_bpm, value,linewidth=.5,edgecolor='black',color='#e85b45',label='Количество точек на предыдущем графике')plt.legend()plt.title('Популярность интервала значений BPM в rap\'е', fontsize=25)plt.xlabel('Количество песен в диапазоне BPM', fontsize=18)plt.ylabel('Диапазоны BPM', fontsize=18)plt.tight_layout()plt.show()

5: Рок

Выборка взята здесь: rockfm.ru/top100
Сам CSV-DataSet: github.com/Rock.csv

Однозначности пока что нет, особенность жанра. поэтому, второй график построен при округлении параметра year/год выхода композиции.

Код точечной диаграммы с комментариями
from matplotlib import pyplot as plt                              # Первый каноничный импортimport pandas as pd                                                    # Второй каноничный импорт для обработки DataSet'аplt.style.use('fivethirtyeight')                                         # Назначаем стилистику визуализацииdata_set = pd.read_csv('Rock.csv')                             # Считываем данные SCV-файла с DataSet'омbpm = data_set['bpm']                                                  # Переменная, для параметра BPM в каждой строкеyear = data_set['year']                                                  # Переменная, для параметра "год релиза" в каждой строкеplt.scatter(                                                                     # Построение точечного графика и его настройкаbpm, year,                                                                   # Данные для осей x и yc=bpm,                                                                        # Привязка цвета к нужной осиs=bpm*1.5,                                                                  # Зависимость размера точкиcmap='gist_heat',                                                        # Цветовая карта графикаedgecolor='black',                                                       # Цвет контура точкиlinewidth=.7                                                                 # Толщина контура точкиalpha=.7                                                                      # Прозрачность точки)bar = plt.colorbar(                                                          # Построение шкалы BPMorientation='horizontal',                                            # Ориентация шкалыshrink=0.8,                                                               # Масштаб шкалыextend='both',                                                           # Скос краёв шкалыextendfrac=.1                                                           # Угол скоса краёв)bar.set_label('Шкала ударов в минуту', fontsize=18)    # Подпись шкалыplt.title('Популярность скорости '                                   # Заголовок графика  'исполнения в роке', fontsize=25)plt.xlabel('BPM', fontsize=18)                                          # Ось абсциссplt.ylabel('Год релиза', fontsize=18)                                # Ось ординатplt.tight_layout()                                                               # Настройка параметров подзаголовков в области отображенияplt.show()                                                                         # Вывод на экран
Самые популярные диапазоны: 120-140 и 100-120 BPMСамые популярные диапазоны: 120-140 и 100-120 BPMКод гистограммы без комментариев
import pandas as pdfrom matplotlib import pyplot as pltfrom collections import Counterplt.style.use("fivethirtyeight")data_set = pd.read_csv('Rock end.csv')index = data_set['number']ranges = data_set['bpm_range']counter = Counter()for index in ranges:counter.update(index.split(';'))range_bpm = []value = []for item in counter.most_common(100):range_bpm.append(item[0])value.append(item[1])range_bpm.reverse()value.reverse()plt.barh(range_bpm, value,linewidth=.5,edgecolor='black',color='#e85b45',label='Количество точек на предыдущем графике')plt.legend()plt.title('Популярность интервала значений BPM в роке', fontsize=25)plt.xlabel('Количество песен в диапазоне BPM', fontsize=18)plt.ylabel('Диапазоны BPM', fontsize=18)plt.tight_layout()plt.show()

6: Блюз

Выборка взята здесь: digitaldreamdoor.com/best_bluesong
Сам CSV-DataSet: github.com/Blues.csv

Видно высокую концентрацию использования темпа около 100 BPM в 90-хВидно высокую концентрацию использования темпа около 100 BPM в 90-хКод точечной диаграммы с комментариями
from matplotlib import pyplot as plt                              # Первый каноничный импортimport pandas as pd                                                    # Второй каноничный импорт для обработки DataSet'аplt.style.use('fivethirtyeight')                                         # Назначаем стилистику визуализацииdata_set = pd.read_csv('Blues.csv')                            # Считываем данные SCV-файла с DataSet'омbpm = data_set['bpm']                                                  # Переменная, для параметра BPM в каждой строкеyear = data_set['year']                                                  # Переменная, для параметра "год релиза" в каждой строкеplt.scatter(                                                                     # Построение точечного графика и его настройкаbpm, year,                                                                   # Данные для осей x и yc=bpm,                                                                        # Привязка цвета к нужной осиs=bpm*1.5,                                                                  # Зависимость размера точкиcmap='gist_heat',                                                        # Цветовая карта графикаedgecolor='black',                                                       # Цвет контура точкиlinewidth=.7                                                                 # Толщина контура точки)bar = plt.colorbar(                                                          # Построение шкалы BPMorientation='horizontal',                                            # Ориентация шкалыshrink=0.8,                                                               # Масштаб шкалыextend='both',                                                           # Скос краёв шкалыextendfrac=.1                                                           # Угол скоса краёв)bar.set_label('Шкала ударов в минуту', fontsize=18)    # Подпись шкалыplt.title('Популярность скорости '                                   # Заголовок графика  'исполнения в блюзе', fontsize=25)plt.xlabel('BPM', fontsize=18)                                          # Ось абсциссplt.ylabel('Год релиза', fontsize=18)                                # Ось ординатplt.tight_layout()                                                               # Настройка параметров подзаголовков в области отображенияplt.show()                                                                         # Вывод на экран
Самый популярный диапазон: 100-120 BPMСамый популярный диапазон: 100-120 BPMКод гистограммы без комментариев
import pandas as pdfrom matplotlib import pyplot as pltfrom collections import Counterplt.style.use("fivethirtyeight")data_set = pd.read_csv('Blues end.csv')index = data_set['number']ranges = data_set['bpm_range']counter = Counter()for index in ranges:counter.update(index.split(';'))range_bpm = []value = []for item in counter.most_common(100):range_bpm.append(item[0])value.append(item[1])range_bpm.reverse()value.reverse()plt.barh(range_bpm, value,linewidth=.5,edgecolor='black',color='#e85b45',label='Количество точек на предыдущем графике')plt.legend()plt.title('Популярность интервала значений BPM в блюзе', fontsize=25)plt.xlabel('Количество песен в диапазоне BPM', fontsize=18)plt.ylabel('Диапазоны BPM', fontsize=18)plt.tight_layout()plt.show()

7: Chillout

Выборка взята здесь: open.spotify.com
Сам CSV-DataSet: github.com/Chillout.csv

Много наложений точек друг на друга. К сожалению, не знаю, как это исправить. Пришлось сделать точки более прозрачными, с помощью аргумента alpha функции .scatter.

Код точечной диаграммы с комментариями
from matplotlib import pyplot as plt                              # Первый каноничный импортimport pandas as pd                                                    # Второй каноничный импорт для обработки DataSet'аplt.style.use('fivethirtyeight')                                         # Назначаем стилистику визуализацииdata_set = pd.read_csv('Chillout.csv')                         # Считываем данные SCV-файла с DataSet'омbpm = data_set['bpm']                                                  # Переменная, для параметра BPM в каждой строкеyear = data_set['year']                                                  # Переменная, для параметра "год релиза" в каждой строкеplt.scatter(                                                                     # Построение точечного графика и его настройкаbpm, year,                                                                   # Данные для осей x и yc=bpm,                                                                        # Привязка цвета к нужной осиs=bpm*1.5,                                                                  # Зависимость размера точкиcmap='gist_heat',                                                        # Цветовая карта графикаedgecolor='black',                                                       # Цвет контура точкиlinewidth=.7                                                                 # Толщина контура точкиalpha=.5                                                                      # Прозрачность точки)bar = plt.colorbar(                                                          # Построение шкалы BPMorientation='horizontal',                                            # Ориентация шкалыshrink=0.8,                                                               # Масштаб шкалыextend='both',                                                           # Скос краёв шкалыextendfrac=.1                                                           # Угол скоса краёв)bar.set_label('Шкала ударов в минуту', fontsize=18)   # Подпись шкалыplt.title('Популярность скорости '                                  # Заголовок графика  'исполнения в Chillout', fontsize=25)plt.xlabel('BPM', fontsize=18)                                          # Ось абсциссplt.ylabel('Год релиза', fontsize=18)                               # Ось ординатplt.tight_layout()                                                               # Настройка параметров подзаголовков в области отображенияplt.show()                                                        # Вывод на экран
Самый популярный диапазон: 80-100Самый популярный диапазон: 80-100Код гистограммы без комментариев
import pandas as pdfrom matplotlib import pyplot as pltfrom collections import Counterplt.style.use("fivethirtyeight")data_set = pd.read_csv('Chillout end.csv')index = data_set['number']ranges = data_set['bpm_range']counter = Counter()for index in ranges:counter.update(index.split(';'))range_bpm = []value = []for item in counter.most_common(100):range_bpm.append(item[0])value.append(item[1])range_bpm.reverse()value.reverse()plt.barh(range_bpm, value,linewidth=.5,edgecolor='black',color='#e85b45',label='Количество точек на предыдущем графике')plt.legend()plt.title('Популярность интервала значений BPM в Chillout', fontsize=25)plt.xlabel('Количество песен в диапазоне BPM', fontsize=18)plt.ylabel('Диапазоны BPM', fontsize=18)plt.tight_layout()plt.show()

8: EDM

Выборка взята здесь: edmcharts.net
Сам CSV-DataSet: github.com/EDM.csv

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

Довольно однозначно вышло...Довольно однозначно вышло...Код точечной диаграммы с комментариями
from matplotlib import pyplot as plt                              # Первый каноничный импортimport pandas as pd                                                    # Второй каноничный импорт для обработки DataSet'аplt.style.use('fivethirtyeight')                                         # Назначаем стилистику визуализацииdata_set = pd.read_csv('EDM.csv')                             # Считываем данные SCV-файла с DataSet'омbpm = data_set['bpm']                                                  # Переменная, для параметра BPM в каждой строкеyear = data_set['year']                                                  # Переменная, для параметра "год релиза" в каждой строкеplt.scatter(                                                                     # Построение точечного графика и его настройкаbpm, year,                                                                   # Данные для осей x и yc=bpm,                                                                        # Привязка цвета к нужной осиs=bpm*1.5,                                                                  # Зависимость размера точкиcmap='gist_heat',                                                        # Цветовая карта графикаedgecolor='black',                                                       # Цвет контура точкиlinewidth=.7                                                                 # Толщина контура точкиalpha=.2                                                                      # Прозрачность точки)bar = plt.colorbar(                                                          # Построение шкалы BPMorientation='horizontal',                                            # Ориентация шкалыshrink=0.8,                                                               # Масштаб шкалыextend='both',                                                           # Скос краёв шкалыextendfrac=.1                                                           # Угол скоса краёв)bar.set_label('Шкала ударов в минуту', fontsize=18)   # Подпись шкалыplt.title('Популярность скорости '                                  # Заголовок графика  'исполнения в EDM', fontsize=25)plt.xlabel('BPM', fontsize=18)                                          # Ось абсциссplt.ylabel('Год релиза', fontsize=18)                               # Ось ординатplt.tight_layout()                                                               # Настройка параметров подзаголовков в области отображенияplt.show()                                                        # Вывод на экран
Самый популярный диапазон: 120-140Самый популярный диапазон: 120-140Код гистограммы без комментариев
import pandas as pdfrom matplotlib import pyplot as pltfrom collections import Counterplt.style.use("fivethirtyeight")data_set = pd.read_csv('EDM end.csv')index = data_set['number']ranges = data_set['bpm_range']counter = Counter()for index in ranges:counter.update(index.split(';'))range_bpm = []value = []for item in counter.most_common(100):range_bpm.append(item[0])value.append(item[1])range_bpm.reverse()value.reverse()plt.barh(range_bpm, value,linewidth=.5,edgecolor='black',color='#e85b45',label='Количество точек на предыдущем графике')plt.legend()plt.title('Популярность интервала значений BPM в EDM', fontsize=25)plt.xlabel('Количество песен в диапазоне BPM', fontsize=18)plt.ylabel('Диапазоны BPM', fontsize=18)plt.tight_layout()plt.show()

9: Заключение

Самым простым графиком сравним количество попаданий в каждый диапазон, композиций, из всех проанализированных ранее жанров*.

* такие жанры как ethnic, ambient, folk, dubstep, reggae и др, не удалось к сожалению разобрать из-за отсутствия качественной выборки...

BPM/Кол-во треков

<60

60-80

80-100

100-120

120-140

140-160

160-180

Blues

2

9

25

35

15

6

8

Chillout

11

35

18

19

12

5

EDM

1

3

21

67

6

2

Rap

5

61

20

7

4

3

Rock

6

20

25

27

11

11

Итог:

2

32

144

119

135

39

29

Простой код, простого графика
from matplotlib import pyplot as pltplt.style.use('fivethirtyeight')x = ['<60', '60-80', '80-100', '100-120', '120-140', '140-160', '160-180']y = [2, 32, 144, 119, 135, 39, 29]plt.plot(x, y, label='BPM', c='#e85b45')plt.legend()plt.title('Сравнение всех диапазонов BPM во всех жанрах', fontsize=25)plt.xlabel('Диапазон BPM', fontsize=18)plt.ylabel('Количество треков', fontsize=18)plt.tight_layout()plt.show()
Подробнее..

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

23.05.2021 10:08:18 | Автор: admin

Продолжаем нашу серию постов о музыкальном программировании. В ней мы говорим о языках, утилитах и других инструментах, превращающих функции и атрибуты в мелодичные [в зависимости от уровня автора] композиции. Сегодня рассказываем о виртуальной среде Klangmeister. Она не требует установки специализированного программного обеспечения.

Фотография: Brandon Erlinger-Ford. Источник: Unsplash.comФотография: Brandon Erlinger-Ford. Источник: Unsplash.com

Музыкальное программирование это процесс написания треков с использованием специализированного ПО, синтезаторов и секвенсоров. Есть огромное количество сервисов, позволяющих влиться в эту тему. О некоторых из них мы уже рассказывали например, OpenMusic и ORCA. С их помощью можно писать музыку в разных жанрах, однако они требуют установки и настройки на компьютере. Композитор и разработчик Крис Форд посчитал, этот факт ограничивающим творчество начинающих музыкантов и решил исправить ситуацию.

Он разработал инструмент, позволяющий творить без заморочек. Так появился Klangmeister с немецкого переводится как мастер звука работающий прямо из браузера.

Что под капотом

Для написания музыки Klangmeister предлагает использовать Clojurescript. Это реализация языка LISP с компиляцией в JavaScript. Необходимые для работы функции хранятся в библиотеке Leipzig, которую написал автор проекта. Он также подготовил достаточно подробную документацию. Для воспроизведения треков приложение использует Web Audio API.

Интерфейс позволяет компилировать программы на лету фактически писать и воспроизводить музыку в реальном времени. Ряд возможностей Крис Форд продемонстрировал на технологической конференции flatMap в Осло несколько лет назад. Например, чтобы написать мелодию, нужно составить массив, включающий продолжительность звучания и высоту тона для каждой отдельной ноты.

(phrase [3/3 3/3 2/3 1/3 3/3]        [ 72  72  72  74  76])

Klangmeister также позволяет объединять несколько мелодий в одну:

(->>  (phrase [3/3 3/3 2/3 1/3 3/3]           [ 72  72  72  74  76])  (then    (phrase [2/3 1/3 2/3 1/3 3/3]            [ 76  74  76  77  79])))

На официальном сайте есть руководство с примерами кода для реализации более сложных техник написания музыки зацикливанием треков и настройкой BPM.

В целом инструмент Klangmeister довольно прост, что является как его достоинством, так и недостатком. Он позволяет взять легкий старт в музыкальном программировании, но задействованный в работе Web Audio API плохо подходит для написания глубоких и комплексных композиций. Также автор отмечает, что Klangmeister лучше всего работает в Chrome. Функции синтеза, которые он использует, могут не поддерживаться в других браузерах (или поддерживаться плохо). Все желающие могут оценить внутренности проекта самостоятельно его исходный код выложен в репозиторий на GitHub.

Какие есть альтернативы

Одна из известных виртуальных сред для аудиосинтеза в реальном времени это SuperCollider. Мы кратко упоминали её в одном из предыдущих материалов. Она существует с 1996 года, и за это время вокруг неё сформировалось обширное сообщество поклонников. SuperCollider более сложный инструмент, чем Klangmeister и на его освоение может уйти длительное время, однако и возможности он предлагает более широкие.

С инструментом работает композитор Крис Браун (не путать с певцом и актером) из Сан-Франциско. С его помощью он написал альбом Branches. Эли Филдстил (Eli Fieldsteel), преподающий теорию музыкальной композиции в Университете Иллинойса, использует SuperCollider для анализа отдельных произведений на лекциях.

Фотография: Valentin Mller. Источник: Unsplash.comФотография: Valentin Mller. Источник: Unsplash.com

Еще одним аналогом Klangmeister, который упоминает сам Крис Форд, является платформа Extempore. Она включает в себя два языка программирования Scheme и одноименный Extempore. Объединяет их возможности компилятор на базе LLVM, позволяющий обрабатывать цифровые сигналы в реальном времени. Как это работает, автор системы рассказывал на конференции OSCON, посвященной открытому ПО.


О чем еще мы пишем в Мире Hi-Fi:


Обзоры напольной акустики на Хабре:


Подробнее..

Легко ли быть рок-звездой, если ты IT-шник и почему вам тоже полезно заниматься музыкой

22.03.2021 12:19:24 | Автор: admin

Их было шестеро - барабанщик, басист, клавишник, гитарист, баянист и человек с татуировками. Как-то так начинался бы фильм о нас, о музыкальной группе Sun-Techniki.

Вы, возможно, скажете ШТА?! Я точно на Хабре? Причём тут какой-то фильм о музыкальных сантехниках?

Да, это Хабр, и это рассказ про музыкальную группу, состоящую из сотрудников одной продуктовой IT-компании.

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

Кратко о нас: мы не профессионалы в музыке, мы профессионалы в разработке софта. Наш софт обслуживает 6% активных веб-сайтов мира (согласно Netcraft), а наша группа выступает на корпоративах в качестве хедлайнеров и за восемь выступлений мы подготовили и сыграли без малого сорок каверов. На каждое выступление мы готовим новую программу, при этом текст часто переделывается так, чтобы отражать тему корпоратива и события в жизни компании. В поддержку выступления идут слайды, которые крутит наш слайд-жокей.

Рассказ получился объёмным, поэтому без оглавления никуда:

  1. Старт проекта / Прикидываем программу выступления

  2. Управление проектом / Дисциплина бьёт талант

  3. Прототип / Щупаем номера

  4. MVP (точнее, MAP) / Минимально допустимое выступление

  5. Тестирование, багфиксинг / Гоняем программу, находим места для улучшений

  6. Релиз (раскатка) / Выступление

  7. Ретроспектива

  8. Заключение / Почему вам тоже стоит заниматься музыкой

  9. Бонусы

Вступление закончено, начинаем!


Старт проекта / Прикидываем программу выступления

Дедлайн / Дата выступления

Корпоратив состоится 21 декабря - если ждать такого письма, то ничего не успеешь. Но зачем ждать, если известно, что корпоративы будут в конце декабря и в конце июля, а восьмое марта будет седьмого марта? Мы ретроспективно знаем свою capacity, поэтому собираемся за три месяца до предполагаемого дедлайна. Позже будет известна точная дата, позже будет известна точная тема, но мы уже должны начинать.

Содержание проекта / Треклист

Начинаем мы с кандидатов в треклист выступления. У выступления есть стандартный общий план:

  • выход (что-то пафосное, заряжающее, вызывающее аппетит)

  • разогрев (может быть совмещён с выходом)

  • заполнение (обычно что-то спокойное)

  • набор напряжения (мы называем это ebanukha, что в переводе с суахили означает это воняет, то есть что-то панковское отвязное, может быть треш)

  • финал, в котором должен произойти катарсис и поставлена точка

Пруф про суахилиПруф про суахили

Ресурсы / Кто участвует в выступлении

Для получения классического проектного треугольника осталось понять ресурсы. Может показаться, что здесь всё понятно - нас шестеро, но были в истории времена, когда кто-то не мог участвовать в конкретном выступлении по разным причинам. Поэтому эти моменты надо проговаривать каждый раз, даже если кажется, что проект типичный.

А ещё у нас был фит с музыкантами не из нашей группы, в таких случаях на этапе старта проекта нужно понять график доступности этих ресурсов ну и интегрировать их в проект.

Брейншторм

Соответственно, на каждый этап брейнштормятся треки. Кандидатов мы берём как просто из головы, так и из нашего слак-канала, ну и конечно же из бэклога.

Про брейншторм на Хабре писали, например, тут: 15 способов превратить мозговой штурм в результат огонь

Брейншторм у нас не совсем классический - после вброса кандидата мы сразу обсуждаем его. Кандидат отбрасывается если:

  • кто-то против. Достаточно одного голоса.

  • штука очевидно нам не по зубам на текущий момент. Такой кандидат обычно идёт в бэклог - в следующий раз может быть мы будем к нему готовы.

  • вещь никак не сочетается с другими кандидатами или темой (конь-цепцией). Тоже в бэклог.

  • вещь очевидно заметно слабее тех, кто уже есть в кандидатах. Нет смысла тратить на неё время сейчас. В бэклог.

  • вещь очевидно не будет принята аудиторией или другими заинтересованными лицами

Очевидно у нас означает мнение большинства. Мы отлично знаем, что нет ничего очевидного.

Как пример пункта 5 - я всегда хотел на восьмое марта (а лучше на 14 февраля) выпустить кавер на трек Pussy от Rammstein. Моё извращённое чувство юмора считает, что это постирония и очень смешно. Но как Product Manager я понимаю, что core segment аудитории этот пассаж не оценит.

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

Управление проектом / Дисциплина бьёт талант

Мы в продуктовых компаниях немного избалованы тем, что дедлайн часто не дедлайн, а ETA, то есть если ты не успеваешь, то ETA можно сдвинуть.

Другое дело релиз концерта. Это проект: тут есть понятный бюджет (наш бюджет - это время, которое мы можем потратить на подготовку), чёткий expected result, жёстко зафиксированная дата, есть неопределённость пути от начала к концу. Поэтому для работы над концертом мы выбираем не гибкие методологии (мы их тоже умеем), а традиционное PMBoK-овское проектное управление.

План (Work Breakdown Structure a.k.a. Иерархическая структура работ)

Ключевые вещи в проектном управлении - это WBS (Work Breakdown Structure), майлстоуны (то есть промежуточные дедлайны), зависимости, ресурсы и управление рисками.

Про проектное управление: PMBoK за 2.5 часа: интервью с Иваном Селиховкиным

Про конкретно WBS: 4 инструмента по полочкам. Управление проектами с WBS, Диаграммой Ганта, CPM и Time-Cost или Преимущества Иерархической Структуры Работ (WBS) для менеджеров ИТ проектов

Про оценку задач: Оценка. Рассчитать и уложиться

Про управление рисками расскажу сам ниже.

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

Капитанские, но, оказывается, не всем очевидные принципы построения WBS:

  • строй WBS справа налево (вот так: <--), то есть:

    • справа напиши результат - концерт готов

    • задай вопрос что мешает считать, что результат достигнут? - номера не готовы, сцена не готова

    • и так рекурсируй до элементарных задач

  • после составления WBS пройди уже слева направо (-->) и на каждую задачу задай вопрос а почему я не могу эту задачу выкинуть?

  • майлстоуны аналогично - справа налево (опять <--). Потому что дедлайн у нас задан заранее

В традиционных трудах по WBS эту структуру рисуют сверху вниз (вверху цель, внизу этапы), но сейчас чаще это всё укладывают в диаграмму Ганта (ужас какой), поэтому я и пишу про справа налево.

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

Вопрос а как мне понять расчётную стоимость задачи оставлю для другой статьи, тема эта считается сложной и здесь я её не раскрою. Мы ретроспективно знаем, что в среднем нужно три-четыре репетиции для MVP одного номера, и ещё пяток репетиций могут уйти на шлифовку. И ещё мы заранее знаем, что мы захотим дополнительные репетиции вне обычного графика, то есть раш (кранч, овертайм - как вам угодно) обязательно будет, так что можно его и запланировать ;)

Инструментарий

Мы не используем ничего тяжёлого - нас не так много, проект структурно не такой сложный. Нам хватает каталога в Google Drive на концерт, в этом каталоге несколько документов:

  • тексты и прочие заметки по номерам

  • документ по планам и рискам (в нём несколько секций, в том числе и оперативные - worklog, brainstorm, шорт-лист треков и подобное)

  • чеклист на сам концерт, он же райдер ;)

  • после концерта в каталог добавится документ по ретроспективе

Отдельно, в корне, лежит документ с общим бэклогом.

Пример записи в ворклоге, кое-как нашёл, ибо такие вещи очень динамичны и лишнее потом просто удаляетсяПример записи в ворклоге, кое-как нашёл, ибо такие вещи очень динамичны и лишнее потом просто удаляется

Управление рисками

Отдельно коснусь моей любимой темы - управление рисками. Почему тема любима - потому что она незаслуженно игнорируется очень многими. А ведь это просто и полезно!

Как и обещал, про риски рассказываю прямо здесь, без ссылок.

Алгоритм:

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

  2. У риска оценивается вероятность срабатывания и тяжесть последствий

  3. Риски сортируются по вероятности и тяжести, и в работу берётся N топов в каждой категории. N зависит от бюджета на работу над рисками

  4. Риску прописываются два плана:

    1. План А - что надо сделать для уменьшения вероятности срабатывания риска

    2. План Б - что надо будет сделать для уменьшения тяжести последствий в случае срабатывания риска

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

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

Для первого риска (участник заболел) предлагаю вам придумать План А и План Б и написать его в комментариях, а про второй (номер не получается) расскажу сам - План Б там вовремя понять, что не прёт и заменить трек на резервный.

Резервный трек отбирается так, чтобы его можно было легко и быстро подготовить. Как вариант резервного трека можно взять старый трек, который мы уже когда-то готовили. Если даже План Б провалился, то есть План Б2 - выкинуть трек вообще и выходить сокращённой программой. Ну либо затащить слабый номер харизмой ;)

Из типичных рисков - плохой звук на площадке. Здесь хорошего Плана Б нет, поэтому в План А (грамотно подготовить площадку и звук на ней) вкладывается довольно много ресурсов, это и выезд на площадку заранее (чтобы можно было перенести площадку в другое место), и найм крутых звуковиков, и несколько саундчеков, и детальнейший чеклист. Но про это ниже.

Из рисков, которые мы не учитывали, но которые сыграли - это выход из строя оборудования. Один раз у нас сломался баян за пять дней до выступления. Сломался жёстко, я не смог его починить. План Б мы выдумали и осуществили очень оперативно - попросили баян взаймы у знакомых. А План А я потом выполнял самостоятельно - купил новый баян.

Этот опыт нас ничему не научил, и в следующий раз у нас сломалась гитара, точнее, нам её немножко разбили во время фотосессии. Ну а ещё позже мы решили разбить гитару на выступлении - ну а чо, все так делают!

Прототип / Щупаем номера

Кроме каверов на песни мы также пробовали делать каверы на плакаты. Кто не узнал - это Sonne от Rammstein.Кроме каверов на песни мы также пробовали делать каверы на плакаты. Кто не узнал - это Sonne от Rammstein.

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

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

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

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

Это всё и выясняется на прототипировании, или, как мы это называем, на прощупывании.

Очень хорошая привычка - документировать всё что можно. Сколько раз на репетиции во время свободной импровизации были найдены отличные идеи, но к следующей репетиции эти идеи забывались напрочь :( Всё превращать в бумажный документ слишком затратно, но вот записывать репетиции целиком - это просто и в некоторых случаях бесценно!Очень хорошая привычка - документировать всё что можно. Сколько раз на репетиции во время свободной импровизации были найдены отличные идеи, но к следующей репетиции эти идеи забывались напрочь :( Всё превращать в бумажный документ слишком затратно, но вот записывать репетиции целиком - это просто и в некоторых случаях бесценно!

MVP (точнее, MAP) / Минимально допустимое выступление

Из продуктового опыта мы знаем, что лучше всего сделать MVP (Minimum Viable Product), и потом его дободрить. Почему? Тема для отдельной статьи ;)

В нашем случае более правильно говорить не MVP, а MAP - Minimum Awesome Product. Ни нам, ни нашей публике не нужно тухлое выступление, нужно awesome выступление!

Про MVP: MVP: что это такое и как работает? (а тут разбор знаменитой картинки с самокатом: Как определить функционал MVP и влюбить клиента в пилотную версию продукта) и сорри за Medium, но на Хабре не нашёл подходящей статьи: The MVP is dead, long life to the MAP.

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

Вовлечение / Эмоциональная кривая

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

Трёхактная схема, классика.Трёхактная схема, классика.

Отличаемся от других / Фишки номеров

Для успеха продукт должен чем-то выделяться, чем-то отличаться от остальных. Мало кому (а прежде всего нам самим) интересны каверы один в один. Это значит, что в кавере должно быть что-то своё. Это может быть другой стиль, это могут быть какие-то фишечки с заменой инструментов или переплетением разных треков. И всё это должно быть не в одной песне, а цельно на всё выступление.

Кто услышит тут отсылочку к совершенно другому произведению - пишите в комментах! И отдельное спасибо программе "Соль" за proof of concept участия баяна в этой песне.

UI, UX / Тексты

Мы всегда хотим, чтобы тексты у нас были готовы уже на этапе MVP, но как правило по самым разным причинам у нас это не получается. Практически никогда тексты не были готовы заранее. Не делайте так ;) Тексты - это сложно, это важно, они могут поменять аранжировку (когда выбранная аранжировка плохо поддерживает текст). Делайте тексты как можно раньше.

С IT-продуктами аналогично - нужны фишечки, нужны эмоции и нужны тексты, ибо тексты - это UX. И нужно это как можно раньше, ибо чем раньше найдена проблема, тем дешевле её исправление.

Но есть и отличие - в IT часто нужна поддержка разных языков, в музыке такое обычно не делают, хотя синхронный сурдоперевод встречается на концертах всё чаще и чаще.

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

Тестирование, багфиксинг / Гоняем программу, находим места для улучшений

До этапа MVP ты думаешь, что всё будет классно, вы опять зажжёте, будете прекрасно восприниматься, всё хорошо и всё такое. Но когда MVP по сути готов, происходит скачок требований, и ты начинаешь докапываться до себя. Здесь не то, и тут не так. Это ужасно, с этим нельзя выходить на сцену, это позор! Тут главное не опускать руки, спокойно остановиться, осмотреться и понять, что конкретно нужно доработать.

Product Walkthrough / Прогоны, сценические образы

На этом этапе мы уже начинаем прогонять программу целиком, включая слова между номерами, думая над движениями и расстановкой на сцене, прикидывая образы. Очень помогает запись прогона и прослушивание - где провисы, где скучно, где неуверенно, где непонятно, где переход излишне резок или излишне плавен. Включается режим максимального докапывания (я бы даже написал слово пожёстче, но РКН не дремлет).

То есть начинается тестирование и багфиксинг. Тяжёлое время, но именно тут продукт становится полноценным, готовым к продакшену.

Как не вспомнить анекдот:

Ветеринар на на приёме у Терапевта:

Терапевт: На что жалуетесь?

Ветеринар: Не, ну так-то каждый может!

Бета / Последние штрихи, препродакшн

В теории продуктового менеджмента где-то здесь нужно привлечь фокус-группу, но мы такой радости лишены, ибо наше выступление должно быть сюрпризом, и все детали держатся в тайне. Так что в нашем HADI-цикле буква D означает данные только изнутри системы, без участия целевой аудитории. Однако к помощи эксперта-критика мы обращаемся - у нас есть специальный человек, который подключается как раз на этапе тестирования. Это наш слайд-жокей.

Про HADI-цикл: Кейс: как ускорить развитие проекта

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

Релиз (раскатка) / Выступление

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

Работа с аутсорсерами / Саундчек

Для концертов нужно концертное оборудование, об аренде которого нужно договориться заранее. Заранее нужно договориться о приезде звуковика, чтобы он настроил всё это. Хороший звуковик стоит дорого, поэтому может быть так, что он нанимается на саунд-чек, а на самом выступлении работает другой звуковик, подешевле. С обоими звуковиками крайне желательно встретиться заранее, чтобы подготовить список оборудования.

О да, это всё должно быть в WBS, о котором я говорил в начале статьи.

Очень важно, нет, не так ОЧЕНЬ ВАЖНО провести нормальный саундчек. Нормальный - это значит прогнать программу несколько раз. В нашем случае программа обычно полчаса, значит, на саундчек нужно три часа. Это не считая монтажа оборудования, который может занимать часа два (иногда и больше).

Это типичная работа с аутсорсерами, со всеми плюсами и минусами. Кто из продуктовых команд и имел такой опыт, вероятно, сейчас смахнули скупую слезу. Да, это может быть сложным и, что самое неприятное, это может быть провальным.

Мы в IT любим канареек, это помогает защищаться от провалов (Ускоряем деплой на продакшен канарейками и самописным мониторингом), но в музыке канареечная раскатка хоть и возможна, но сложна, ну и в нашем случае недоступна - у нас же не тур, а ровно один концерт.

Чеклисты

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

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

Про ТЗ: Стандарты и шаблоны для ТЗ на разработку ПО

Ретроспектива

Очередной эксперимент - добавили женский вокал, организовав фит с коллегами. В центре в светлой футболке - наш слайд-жокей, он же критик. И не просто критик - эксперт в тяжёлой музыке, автор статей в музыкальные журналы!Очередной эксперимент - добавили женский вокал, организовав фит с коллегами. В центре в светлой футболке - наш слайд-жокей, он же критик. И не просто критик - эксперт в тяжёлой музыке, автор статей в музыкальные журналы!

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

Обычная такая ретроспектива - что было хорошо и что мы будем продолжать делать; что можно улучшить и каким образом.

Обратная связь (ищем Market Product Fit)

Нередко на аудиторию запускается анонимный опросник. Мы пробовали разные форматы - NPS, market product fit, и так далее, я полагаю, тут всё очень индивидуально. Также мы слушаем, что говорят люди, какие фотки и видео они выкладывают в инстаграм, какие видео на нашем канале набирают больше просмотров, ну в общем после релиза происходит этап валидации успеха и анализ произошедшего. Результаты этого анализа используются при подготовке следующего концерта.

Про market product fit: Market Fit или как найти точку G у стартапа

Growth hacking / Щупаем аудиторию быстро

Я выше говорил, что в нашем цикле HADI нет внешних данных. Как вы сейчас поняли, это немного не так ;) Правильнее говорить, что у нас просто длинный цикл - для проверки гипотезы нам нужен релиз. Многие продакты сейчас, возможно, ударят себя ладонью по лбу, но это та реальность, в которой мы работаем.

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

А на самом деле мы ведь больше для себя это делаем, а не для аудитории. Просто так уж сложилось, что нам с нашей аудиторией по пути. Всем бы продуктам так, да? ;)

Заключение / Почему вам тоже стоит заниматься музыкой

Клавишник группы Sun-Techniki, он же Core Tech Lead.Клавишник группы Sun-Techniki, он же Core Tech Lead.

Может показаться, что всё это очень скучно и очень сложно. Сложно - да, скучно - нет. Я ведь не рассказал про творческую часть, там очень много фана. Само выступление - это чистый фан, чистый адреналин/дофамин/окситоцин/whatever. Иногда ты думаешь - ну ёлки, ну зачем я опять в это ввязался, но эти шестьсот часов подготовки стоят тридцати минут выступления. И тысяча часов тоже были бы адекватной ценой.

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

Так вот, я таки понял, чтобы что.

Средство против выгорания

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

На Хабре про выгорание пишут много, но я бы выделил вот эту статью: Профессиональное выгорание айтишников: 15 ответов психиатра Максима Малявина

Как не выгорать? Это просто (картинка с Тони Роббинсом):

  1. заниматься интересным ненаскучивающим делом

  2. регулярно в этом деле побеждать (получать подкрепление)

  3. работать с удовольствием

Так как крайне сложно найти одно занятие, в котором всё это будет соблюдаться, то очевидный трюк - найти несколько занятий и заниматься ими по очереди. Обязательно нужно, чтобы одно из этих занятий имело проектный характер, и чтобы достижение побед (то есть успешное завершение проекта) было не очень долгим.

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

Занимайтесь музыкой, выступайте. Не обязательно выступать на площадках - ютуб также отличное место.

Бонусы

Подробнее..

Физика звука? Что такое громкость? Разбор

19.02.2021 16:11:01 | Автор: admin
Если вы когда-нибудь подбирали себе музыкальную колонку, то сталкивались с тем, что сделать это не так-то просто, особенно если вы не специалист в звуковой аппаратуре. И еще ладно, если вы можете послушать акустику в магазине, но если такой возможности нет, то как понять?

Чем больше Ватт, тем громче, так? Но ведь громкость в децибелах


Громкость в децибелах или ваттах, частотный диапазон что это все означает? А если спросить про соотношение сигнал/шум? И это не говоря о том, что звучание это дело вкуса.

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

Что такое звук?


Для начала давайте ненадолго вернемся на урок физики и вспомним, что вообще такое звук. Это механические колебания, распространяющиеся по воздуху, жидкости или даже по твердому телу в виде волн.Но для нас звук, это в большинстве случаев просто колебание давления в воздухе.



Давление меняется, наши барабанные перепонки улавливают эти изменения и мы слышим звук!

Соответственно, чем сильнее перепады давления? тем звук громче. Казалось бы, все просто. Но здесь физика начинает смешиваться с человеческими ощущениями и все становится сложнее.

Восприятие громкости




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

Например, утверждение громкость звука составляет 30 дБ означает, что интенсивность звука в 1000 раз превышает порог слышимости звука человеком.Но и в данном случае не все так просто. Изменения давления в воздухе измеряется в децибелах, но вот наше восприятие громкости в другой величине фонах!

Начнем с того, что все частоты мы слышим по-разному.Дело в том, чувствительность нашего уха к разным частотам сильно разная. Поэтому, громкость, это скорее про наши ощущения, чем про давление.

Что это такое?

Фон (др.-греч. звук)

Фоны это такие кривые громкости которые были построены по усредненным ощущениям людей с нормальным слухом в возрасте от 18 до 25 лет включительно. На этот счет даже есть ГОСТ, стандарт ISO 226. Поэтому не переживайте все официально. Люди были проверены с вымытыми ушами.



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

Например, тон с частотой 1000 Гц мы начинаем слышать при значении 0 децибел, то есть прямо на пороге слышимости. А тон с частотой 20 Гц мы начнем слышать только в районе 80 децибел.

Поэтому в басовитых колонках нужны большие и мощные динамики для низких частот. В JBL Partybox 310 таких динамиков целых два, по 176 мм каждый.Но и за высокие частоты тут отвечают два динамика, естественно, диаметром поменьше 65 мм.

Кстати, с этими кривыми есть интересный момент. Если нанести на график звуки разных языков, то окажется, что наша речь попадает как раз в провал на графике примерно от 250 до 5000 герц. То есть у нас от природы есть своеобразный аппаратный усилитель речи.А свистящие призвуки мы слышим громче всего. Именно поэтому они нас так бесят.



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



Именно поэтому и шкала громкости в фонах, которые мы привыкли называть децибелами тоже не линейная, а логарифмическая. Это значит, что при увеличении громкости в 10 раз мы получим +10 дБ, а в 100 раз +20 дБ.Это объясняет, почему разница между громкой музыкой 110 децибел и шумовым оружием (200 Дб) не выглядит такой уж большой в децибелах. Хотя мы же знаем, что и при 100 децибелах можно стать шумным оружием, всё зависит от выбора композиции.

Ватты


Окей, с тем, что такое громкость и её восприятием мы разобрались.Но как понять, с какой громкостью будут звучать акустика и хватит ли нам этой громкости, чтобы раскачать нужное помещение?

Этот вопрос не менее каверзный. Громкость в децибелах на колонках никогда не указывается. Зато указывается мощность в Ваттах.Например, в характеристиках JBL Partybox 310 можно найти значение полной выходной мощности 240 Вт RMS.

Что это значит? Оказывается, мощность тоже бывает разная.



Тут важно обратить на буковки RMS это значит предельная синусоидальная мощность или Rated Maximum Sinusoidal. Если по-простому, колонка может работать в течение одного часа с реальным музыкальным сигналом без физического повреждения. То есть реально на пределе сил. В основном именно такой показатель указывают все приличные производители.

Но нам нужно чтобы музыкальная колонка могла работать более одного часа, поэтому вычислим другой показатель, который называется просто синусоидальная мощность. Это уже такая мощность, при которой колонка сможет бесконечно долго работать без повреждений. Она обычно процентов на 25 меньше RMS.

Итого получается, что наш монстр может выдавать примерно 180 Вт!Кстати, важный момент, часто на дешевых колонках указывают всякие запредельные мощности типа 1000 Вт, но не RMS а PMPO не путать с PIMP.

PMPO Peak Music Power Output. Это еще один способ указания мощности. Но проблема в том, что это такая мощность, которую динамик сможет выдержать в течение 1-2 секунд. Поэтому внимательно изучайте какого типа Ватты вам продают.

В JBL Partybox 310 240 RMS или примерно 180 Вт чистой мощности. Но много это или мало?

Смотрите, например, у маленькой, но громкой JBL Charge мощность: 30 Вт RMS. Такой колонки хватит, чтобы раскачать небольшое помещение до 20 квадратных метров.



240 Вт RMS хватит на целый спорт зал, а с учетом что тут Тут Bluetooth 5.1 и можно подрубить вторую вторую колонку, чтобы они работали в паре, то можно и концерт устроить.

Вообще эта колонка много чего умеет. Звук можно передать не только по Bluetooth, но и через AUX-вход, а также можно воткнуть USB-флешку и переключать треки прямо с колонки или через специальное приложение Partybox App.



Через это же приложение, можно стримить музыку и управлять светом: тут куча вариантов подсветки. Или даже можно настроить караоке для этого есть микрофонные входы. Микрофон у JBL тоже есть PBM100. Он довольно простой, зато его специально создавали под линейку Partybox.У него кардиоидная диаграмма направленности, поэтому слышно только голос, никаких посторонних шумов.



Также прямо в колонке есть целая панель звуковых эффектов.Получается настоящий передвижной караоке. Колонка тяжелая, конечно, но тут есть ручка, как в чемодане, и колесики очень удобно придумали. Что важно, есть защита от брызг IPX4. А значит и на природе можно устроить движ.

Кстати, ёмкость аккумулятора 72 Вт*ч. Его хватит на 5 часа работы, если врубать музыку на полную, в экстренных условиях, например, на улице с низкой температурой можно рассчитывать на 2-3 часа работы. А в негромком чилл-режиме колонка может проработать до 18 часов.

АЧХ


Ладно, с громкостью и мощностью понятно, а как же с качеством звука?

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



Второй способ посмотреть на амплитудно-частотную характеристику звука колонки. Она показывает то, как громко динамики воспроизводят звуки разных частот, а если точнее, то насколько равномерно громкость распределена по частотам. Самому провести замер АЧХ не очень просто, но в интернете обычно можно найти тесты АЧХ на популярные гаджеты.

В идеальном случае АЧХ должна быть почти П-образной с резким возрастанием на самых низких частотах, горизонтальной линией к высоким частотам и падением где-нибудь в районе 20 килогерц. В реальности даже очень дорогие студийные или сценические акустические системы дают не идеальную АЧХ, а в доступных обычному покупателю устройствах она будет сильно отличаться от идеала. Здесь нужно смотреть на то, чтобы на графике не было сильных проседаний, чаще всего это заметно в басах, то есть самых низких частотах, которые расположены слева на графике.

Чтоб вы понимали масштаб явления. Если сравнить АЧХ этой колонки и iPhone 12 Pro, то будет наглядно видно, почему смартфоном комнату не раскачать и он будет звучать пискляво, хоть и громко.Но точных студийных замеров АЧХ для нашей колонки в интернетах, к сожалению, нет.

Соотношение сигнал/шум




Наконец, качество звука показывает соотношение сигнала к шуму. Это говорит нам о том, насколько полезный сигнал, то есть звуки песни или кино, превосходит шум, который неминуемо есть в любой акустике. Его можно заметить самому, если не подавать на колонку или усилитель никакой звук и выкрутить громкость на максимум. Соотношение сигнала к шуму измеряют в децибелах и чем оно больше, тем лучше. Условно можно сказать, что 80 децибел хороший уровень, 100 High End. В этой колонке соотношение 90 децибел, что очень даже хорошо.

Итоги




Сегодня мы узнали гораздо больше о звуке и о том, на что стоит обратить внимание при выборе музыкальных колонок в комнату, на дачу или для выездов на природу. В то же время мы узнали о JBL Partybox 310, которая является представителем мощных и универсальных колонок, которые подойдут для тусовки дома или на природе. Это своеобразный чемоданчик звука с подсветкой, встроенным аккумулятором, высокой громкостью и неплохим качеством. В общем, и для дома, и для пикника.
Подробнее..

Доступные мониторы для домашней студии и обычного прослушивания музыки делимся обзорами акустики

16.01.2021 16:12:10 | Автор: admin

В прошлый раз мы начали говорить об аудиотехнике для стримов, записи треков и подкастов написали про охватывающие наушники on a budget. Сегодня продолжим тему сборки собственной студии и на этот раз остановимся на доступных мониторных стереосистемах.

Фотография: Omid Armin. Источник: Unsplash.comФотография: Omid Armin. Источник: Unsplash.com

[8 210] Behringer MS16 годятся для мультимедиа и творческих задач начального уровня. Это достаточно старая модель, которую все еще можно найти за очень небольшие деньги. Здесь есть вход для динамического микрофона на фронтальной панели, дополнительный вход mini-jack на тыловой части для плееров и других гаджетов, плюс аналогичный выход для наушников 3,5 мм.


PreSonus Eris E3.5 BT предлагают приличный, но обоснованный ценовой скачек по сравнению с моделью выше. Они ближе к профессиональной акустике по возможностям, а стоимость этих мониторов остается средней даже для крепких мультимедийников. В обзоре есть анпэкинг, показаны резиновые ножки-наклейки для развязывания колонок с поверхностью, возможности коммутации и настройки, плюс рассмотрены характеристики системы. Акустика годится для прямого подключения смартфона, планшета или портативного плеера. Кстати, она почти в два раза массивнее MS16, но это полезная нагрузка, которая вместе с виниловым покрытием корпуса производит приятное впечатление и добавляет солидности этой модели.


[14 940] M-Audio BX4 весьма примечательная модель в нише мониторов для мультимедиа. Она ближе к профессионалам, чем может показаться на первый взгляд. Однако подходит и для домашнего использования в самых различных ситуациях от фильмов до игр и фоновой музыки. В обзоре есть аккуратное ревю комплектации (присутствует minijack-2RCA и minijack-minijack), продемонстрировано качество сборки (кабинеты выполнены из ДВП) и эквалайзер на задней части. Стоит заметить, что BX4 мощнее PreSonus Eris E4.5, о которой мы расскажем далее в подборке, поэтому данную пару мониторов точно стоит рассматривать для домашней студии.


Фотография: Petri R. Источник: Unsplash.comФотография: Petri R. Источник: Unsplash.com

[15 490] Pioneer DJ DM-40 это еще одна компактная стереопара. Как видно из обзоров, она неплохо вписывается в интерьер, светлый корпус не оттягивает на себя внимание там, где в этом нет какой-либо необходимости например, на рабочем столе [хотя доступен и классический черный вариант]. Комплектация, внешний вид, впечатления от использования в формате домашней студии есть в обзорах, которые мы залинковали выше, а у нас вы найдете компактное описание и паспортные данные модели. Помимо этого, есть версия этой системы с поддержкой Bluetooth и кодеков SBC, AAC и aptX за нее придется доплатить 2500 рублей.


[20 207] PreSonus Eris E4.5 гораздо более массивный комплект, хотя по начинке он мало чем отличается от E3.5. Здесь есть кевларовый диффузор, который, конечно же, чуть крупнее; присутствует аналогичный дюймовый твитер; а на выходе полностью совпадающая мощность и звуковое давление. Поэтому смело берите чуть более компактный вариант, если располагаете небольшой площадью поверхностей для размещения акустики и ограничениями по бюджету.


[20 600] Mackie CR4-X точно конкурируют с E3.5, но и вынуждены соперничать и с M-Audio BX4, которые мы рассмотрели чуть выше. К сожалению, в комплекте отсутствуют какие-либо средства для развязывания колонок с поверхностью (в том или ином виде идут практически с каждой системой из нашей подборки), а система не выделяется чем-то особенным по характеристикам, дизайну и звучанию, что подтверждают обзоры. Поэтому мы рекомендуем обязательно слушать акустику перед покупкой ставить знакомые вам композиции, чтобы быстро обнаружить возможные недостатки. У нас аудиотехника всегда доступна для ознакомления без каких-либо обязательств с вашей стороны по договоренности нужная система будет ждать вас в шоуруме, а менеджеры помогут подобрать подходящие альтернативы, чтобы вы могли сразу сравнить их.



[24 400] Monkey Banana Gibbon AIR это мощные, яркие по своей внешности и достойные по всем параметрам мониторы. Одним словом альтернатива раскрученным брендам. Что интересно, от инженеров из Германии. Есть поддержка Bluetooth, что объясняет и заметную прибавку к стоимости. Однако для совсем небольшой комнаты мониторы могут не подойти эта система мощнее большинства сопоставимых по габаритам коллег из этой подборки и в полной мере раскрывает свои возможности на достаточно приличной громкости, что в ограниченном пространстве может вызывать дискомфорт и ненужные искажения. До покупки нужно слушать.


Что мы решили вынести за скобки:

  • [10 900] Мониторы Artesia M200 без обзоров

  • [25 040] BL Pro Control 2P Stereo конкуренты Gibbon AIR


Дополнительные подборки:


Подробнее..

Музыка операционных систем как стандартные звуки и код превращают в полноценные композиции

14.06.2021 08:15:59 | Автор: admin

Ранее мы уже рассказывали о музыке зашитой в разных версиях ОС Windows: вспоминали композицию CANYON.MID, на которую сегодня существует огромное количество каверов, и трек Beautiful Way, демонстрировавший возможности мультимедийного формата ASF.

Сегодня мы продолжим тему, но поговорим о немного другой ее стороне музыке, которую пишут сами пользователи. Они берут стандартные звуки в качестве семплов и даже озвучивают куски исполняемого кода с помощью специализированного софта.

Фотография: Ricardo Gomez. Источник: Unsplash.comФотография: Ricardo Gomez. Источник: Unsplash.com

Музыкальные оповещения

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

Один из них со звуками Windows еще в 2007 году записал Robbi-985. В свое время он занимался моддингом загрузчика Windows XP и написал несколько тематических программ. Для работы с семплами автор использовал ModPlug Tracker (ныне OpenMPT), с помощью которой готовят трекерную музыку. Она представляет нечто среднее между цифровой и нотной записью, и использует импульсно-кодовую модуляцию. В каком-то трек Robbi-985 стал культовым и набрал более 12,5 млн просмотров на YouTube. Некоторые комментаторы отмечают, что даже спустя пятнадцать лет регулярно возвращаются к его прослушиванию.

Нельзя не отметить еще один трек. Здесь в качестве семплов автор использовал звук всплывающего окна с ошибкой из разных версий Windows. Комментаторы под видео заметили, что композиция напоминает OST к старым видеоиграм. И хотя трек был опубликован в 2008 году, он продолжает набирать просмотры по сей день.

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

Спокойный темп и отсутствие резких звуков делают её идеальным вариантом для фонового прослушивания во время работы или поиска концентрации для занятия хобби.

Музыка сборки ядра

Заставить звучать операционную систему можно и с помощью сторонних программ по этому пути пошел инженер Дэвид Поль (Devin Pohl). В аудиоредакторе SoX, способном преобразовать в аудиотрек любую текстовую информацию, он озвучил код, исполняемый во время сборки ядра Linux. В 2019 году он даже выпустил тематический альбом Sounds of the Compiling Linux Kernel. Там можно найти треки с названиями вроде Building SBCL и Building TensorFlow.

В начале этого года инженер перезаписал и переосмыслил ранее записанную музыку, а затем залил все в плейлист на стриминговом сервисе. Также он выложил код своего проекта на GitHub. Стоит заметить, что генерируемый звуковой ряд сложно назвать музыкальным и сколько-нибудь приятным для слуха (это признает и автор) он напоминает значительно более резкий звук dial-up модема. Но даже у таких необычных экспериментов есть свои. Здесь как и всегда работает правило: Красота в глазах смотрящего. Или в этом случае в ушах.


Дополнительное чтение в нашем Мире Hi-Fi:

Подробнее..

На репите повторяющиеся музыкальные треки помогают сконцентрироваться что можно послушать

20.06.2021 10:05:00 | Автор: admin

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

Фотография: Roman Synkevych. Источник: Unsplash.comФотография: Roman Synkevych. Источник: Unsplash.com

Дверь в состояние потока

Наша пропускная способность с точки зрения восприятия и работы нервной системы имеет ограничения. Когда мы сконцентрированы, организм направляет весь этот ресурс на решение конкретной задачи, и работа спорится. Один из эффективных способов добиться такого эффекта включить любимый трек и прослушивать его снова и снова во время выполнения того или иного действия. По словам психолога Элизабет Маргулис (Elizabeth Margulis), однообразность акустического фона не позволит разуму отвлекаться.

Дело в том, что наш мозг достаточно быстро привыкает к повторяющемуся паттерну и через какое-то время перестает его замечать в такой момент мы чуточку больше фокусируемся на важных вещах, которыми заняты под муз. сопровождение. Этот эффект еще в 2004 году описал Джефф Хокинс в своей книге Об интеллекте, посвященной теории работы мозга.

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

Парочка вариантов для прослушивания

Основатель системы управления контентом WordPress Мэтт Мулленвег часто ставит музыку на повтор, когда программирует. Её он выбирает из своего плейлиста там есть работы как джазовых исполнителей вроде Декстера Гордона и Сонни Роллинза, так и хип-хоп треки от Jay-Z и Бейонсе. Аналогичного подхода придерживаются некоторые писатели и журналисты за время работы они могут прослушать одну и ту же песню 300400 раз.

Если перспектива крутить единственный трек вас не прельщает, на Hacker News рекомендуют включать на репите альбомы. Например, Dreamweapon: An Evening of Contemporary Sitar Music от британской альтернативной рок-группы Spacemen 3. Его легко слушать, так как он состоит из ненавязчивых ритмов и предсказуемых акустических решений.

Фотография: Garett Mizunaka. Источник: Unsplash.comФотография: Garett Mizunaka. Источник: Unsplash.com

В том случае, если подобная музыка вас отвлекает, а слова в любимых песнях не дают сосредоточиться, попробуйте обратить внимание на саундтреки к фильмам и видеоиграм. Их задача помочь игроку погрузиться в происходящее на экране, особенно если речь идет о музыке с мягким и спокойным звучанием вроде Lo-Fi. Сотрудники ИБ-компании Bishop Fox особеннорекомендуютподборки изстарых игрNintendo, выполненные в этом жанре. Конечно же, в тематических обсуждениях упоминают и саундтреки из линейки игр GTA.

Разумеется, какого-то секретного способа для подбора подходящего фона нет все зависит исключительно от ваших предпочтений. Однако Даг Белшоу, один из авторов обучающего проекта Web-грамотность в Mozilla, выделил три правила, на которые он ориентируется при выборе трека для прослушивания на повторе: а) существенная длительность (от трех минут); б) от 100 до 120 BPM (например, в эту категорию попадает Stayin Alive от Bee Gees); в) отсутствие вокальной составляющей. По словам Дага, ему нравится работать под трек Arcadia в исполнении немецкого музыканта Apparat. С таким фоном, он чувствует себя наиболее продуктивным.

А что играет на повторе у вас? Если будет такое желание, поделитесь в комментариях.


Больше материалов по теме в нашем Мире Hi-Fi:


Подробнее..

Go, локдаун и новый MPD-клиент встречайте Ymuse

09.02.2021 20:10:35 | Автор: admin

Уже лет десять моим основным медиаплеером на компьютере является MPD, Music Player Daemon фоновый сервис, воспроизводящий музыку.


Чтобы с этим сервисом как-то взаимодействовать, нужна программа-клиент. Таких программ существует не один десяток, но до недавнего времени я никак не мог найти ту, которая меня бы полностью устраивала поэтому в один прекрасный день я решил написать свою (тут и локдаун кстати подвернулся).


Предлагаю вашему вниманию краткий обзор (сравнительно) нового MPD-клиента для Linux/GTK под названием Ymuse, версию 0.16 которого я недавно выпустил.


Go Gopher поднимает бокал за здравие Ymuse


Music Player Daemon


Сначала немного о том, что же такое Music Player Daemon, для тех, кто с ним незнаком.


Он представляет собой сервис (на айтишном жаргоне демон), который работает в фоновом режиме в недрах компьютера и способен воспроизводить музыку или стриминговое Интернет-аудио (Интернет-радио).


Помимо воспроизведения звука, сервис этот внешне никак себя не проявляет. Чтобы им управлять, требуется специальная программа, которую традиционно называют клиентом, и этих клиентов есть множество под разные платформы от Windows до Wear OS.


Когда я впервые познакомился с такой концепцией разделения компонентов на невизуальный (воспроизводящий аудио) и визуальный, то был немного озадачен, однако довольно быстро осознал её удобство.


Как работает Music Player Daemon


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


Нередко используется конфигурация, когда MPD крутится на микрокомпьютере типа Raspberry Pi, подключенном к колонкам, а управляют им с компьютера или через мобильное приложение.


Также MPD поддерживает плейлисты (списки воспроизведения) и стандартное стриминговое аудио, благодаря чему становятся доступны тысячи Интернет-радиостанций.


Кстати, в Линуксе есть смысл вместе с MPD сразу поставить пакет mpdris2, который свяжет его со стандартным интерфейсом медиаплеера MPRIS. Тогда демоном можно будет управлять стандартными медиа-клавишами (перемотка, пауза, стоп и т.д.).


Ymuse


Теперь о том, зачем, собственно, понадобился ещё один MPD-клиент.


В своё время я перепробовал несколько существующих клиентов и в итоге остановился на минималистичном Sonata, который практически полностью меня устраивал, за исключением пары моментов:


  • Неудобный вызов часто используемых мной функций через вложенные меню.
  • Неповоротливость с большим плейлистами (на несколько тысяч треков).

Последний пункт был следствием того, что Sonata написана на Python, который, как известно, не славится особой производительностью.


В общем, терпел я, терпел, и в конце концов не выдержал и написал свой клиент, который получил название Ymuse и иконку в виде бокала для мартини, напоминающего букву Y:



Внешне Ymuse также ожидаемо минималистичен:



При этом его функционал, по моему скромному мнению, достаточно богат:


  • Подключение к локальному или сетевому серверу MPD по TCP или Unix-сокету, автоматическое восстановление подключения.
  • Отображение очереди воспроизведения, сортировка по любому свойству, перемешивание, удаление треков из очереди.
  • Фильтрация очереди по подстроке.
  • Сохранение очереди в виде плейлиста (существующего или нового).
  • Просмотр и поиск по библиотеке MPD, переход к исполнителю или альбому из очереди воспроизведения.
  • Просмотр списка плейлистов, удаление и переименование плейлиста.
  • Собственный список потоков (Интернет-радиостанций) с возможностью добавления, удаления и редактирования элементов.
  • Настройка отображаемых столбцов в списке воспроизведения.
  • Настройка отображаемого текста в плеере (используется синтаксис Go template).
  • Переключение режимов MPD (random, repeat и consume).
  • Регулировка громкости.
  • Перемотка трека в произвольное место.
  • Отображение обложки текущего альбома в плеере.
  • Поддержка локализации. Доступные языки:
    • английский
    • русский
    • нидерландский
    • японский

Работает Ymuse по моим наблюдениям достаточно стабильно у меня он вкалывает почти непрерывно.


Ещё скриншоты

Библиотека:
Библиотека Ymuse


Потоки (Интернет-радиостанции):
Потоки Ymuse


Настройки:



Go Go Go


Для реализации Ymuse я выбрал молодой, но многообещающий язык Go, разрабатываемый Google.


Go язык со строгой типизацией, который нативно компилируется под огромное количество платформ и архитектур, от Linux до Android и от SPARC до ARM. Это делает его весьма перспективной заменой морально устаревшему и довольно неуклюжему C++. Go очень дружественен к программисту, синтаксисом напоминая Python, а также предоставляет поддержку многопоточности из коробки.


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


Именно наличие двух готовых библиотек gompd для коммуникации с MPD-демоном и gotk3, позволяющей работать с графическим интерфейсом GTK сделало возможным создание практически полной функциональной копии Sonata за пару недель (!) работы по вечерам. В обе библиотеки, кстати, пришлось слать пулл-реквесты, чтобы что-нибудь исправить или добавить.


И вот результат: с моим плейлистом на 12K+ треков Ymuse работает визуально раза в два-три быстрее Сонаты. (Замечу в сторону, что скорость работы приложения теперь ограничивается производительностью GTK, что особенно заметно на больших списках.)


Исходный код и установка


Исходный код Ymuse доступен на GitHub, а установить его можно из .deb, .rpm или snap-пакета:


snap install ymuse

Подробнее об установке можно прочитать на странице приложения (версия на английском).


Жалобы и предложения пишите в трекер на Гитхабе (желательно на английском).

Подробнее..

Противостояние беспроводных и проводных наушников

19.02.2021 12:19:30 | Автор: admin
image

Сегодня мы затронем популярную тему, в которой, итак, много очевидного, но не для всех. Речь пойдёт о современных беспроводных (TWS) и проводных наушниках. Поскольку полноразмерные наушники вообще разорвут в пух и прах TWSки, будем сравнивать с проводными внутриканальными наушниками.
В теме будет гореть у всех: любителей комфорта, аудиофилов, эплофанов и просто у Игоря, которому норм потреблять контент через стриминговые аудиосервисы типа Spotify. Let's go!

Разделение на классы потребителей


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

Итак, мы имеем условного Петю, который вырос на виниле и ламповых проигрывателях. Перейдя в мир электронного прогресса, он и дальше продолжает слушать такой контент, только уже в оцифрованном виде, с тех же пластинок. У него имеется hi-res плеерок, эдак от 150$ и до бесконечности, арматурные/гибридные проводные наушники с одним или более драйвером. Весь контент у него в lossless формате и с битрейтом 900 kbps 5000 kbps. Ещё у него дома акустика по цене почки и сопутствующие медно-позолоченные извращения перед вами аудиофил. Он слушает технику, а не музыку.

Ко второй категории относиться друг Пети, только без последнего пункта с дорогой акустикой. Вот в эту категорию попадаю я.
Третья ниша это ребята, которые с превеликим удовольствием слушают Spotify, Deezer, YouTube Music, свои плейлисты, накиданные вручную на проводных наушниках с мобилки или какой-то сансы.
Кстати, у меня лежит как память Sansa Clip Zip. Чумовой малыш, весом в 16 грамм, под модифицированной прошивкой (Рокбокс) способен выдавать максимально крутой звук для не hi-res портатива в своё время.

Ну и четвёртая категория. Люди слушают с TWSок (порой, неприлично дорогих) всё то же самое, что и ребята из третей ниши.
Ах, да, ещё есть каста apple + airpods. Это вообще умора и почему, расскажу ниже.

TWS наушники: плюсы и минусы


Аудиофилы могут смело пропускать этот пункт.
Выше, мы определили категории людей и их потребности. Сейчас мы поговорим о тех, кто любит сомнительный комфорт и абы играло.

Что же может современный bluetooth 5.2? Аж 2 мбит/с это раз. Какие же кодеки поддерживает bluetooth?

image

Что мы видим, господа? Правильно, на 2021 год полное отсутствие прогресса по скорости передачи информации посредством bluetooth.

Подавляющее большинство TWSок поддерживают SBC Моделей с поддержкой aptx меньше. AptxHD уже по пальцам, а вот с кодеком LDAC аж 1 модель и то, убогое коромысло в виде Sony WI-1000XM2. Не забываем, мы говорим про TWS наушники.
Теперь минуточка сарказма для пользователей техники apple, которая дружит только с кодеком AAC. Ребята, с чего бы вы не слушали по воздуху, выше 250kbps вы не прыгните. Ну не умора? Покупая фирменные airpods за немалые деньги Да, на софтовом уровне маркетологи вам расскажут, что там всё супер-пупер и компенсируется, но вы же не маленькие и понимаете, что все эти бустеры-шмустеры не обгонят железку. Да, приукрасят, но узкое горлышко это узкое горлышко.

Итак, теперь коротко о плюсах и минусах беспроводных наушников.

Плюсы:
  • спорное удобство беспроводной конструкции (спорное потому, что если не пенки, то теряются и выпадают на раз-два.

Минусы:

  • качество звучания часто не совпадает с ценой/качеством;
  • потеря или выпадение наушников;
  • нужно заряжать (да-да, сколько бы не держали заряд, но в самый неподходящий момент бац и разрядились).

Для меня, как и знакомых, которые более 10 лет работают в сфере портативной аудиотехники, остаётся загадкой: почему к 2021 году по bluetooth нельзя пустить более широкий поток данных. Маркетинг? Невостребованность?

Подводя итог с TWS наушниками, могу сказать следующее: слушал я и дорогие экземпляры, по 300-400$ и более дешёвые. Всё это баловство. По цене таких себе, но дорогих TWSок можно купить 2 пары отличных проводных внутриканалов.

Чтобы не быть голословным и хоть чем-то помочь армии TWSников, зацените Anker SoundCore Liberty Air 2 За свои 100$ дают сносный звук. Больше я бы не отдал за TWS

Проводные внутриканальные наушники


Даже и не знаю, что тут писать. Вернувшиеся с перекура аудиофилы и так всё понимают. Этот пункт, скорее для контрастного сравнения с TWS.

Провод это провод. Начну сразу с плюсов/минусов.

Плюсы:

  • качество звука;
  • отсутствие заморочек с зарядкой;
  • в силу наличия провода не потеряешь;
  • цена, практически, всегда соответствует качеству, нет переплат, как в варианте с TWS

Минусы:

  • микрофонный эффект на холоде (это когда дубеет провод и ты слышишь касания одежды);
  • перетирается провод в местах соединения с излучателями и возле джека, но у наушников от 100 150$ это случается крайне редко;
  • для тех, кого напрягает провод провод.

Все вышеперечисленные минусы, перечёркивает качество звука по проводу.
От себя порекомендую обратить внимание на Queen of Audio Vesper Jade Green и фирму 1More. Отличные варианты для любителей тёмного и сбалансированного звучания за цену до 100$ Варианты дороже советовать не могу ибо там уже надо более детальный подход и прослушивание под себя.

За многие годы переслушал много наушников, но сейчас китайцы берут рынок в свои руки. Shure, Etymotic уходят в тень.

А в коня ли корм?


Есть ещё один забавный нюанс. Многие, покупая дорогие наушники, слушают потоковое аудио, где и на половину не раскрывается весь звуковой спектр. Начинающие аудиофилы, спотыкаются о камни несовместимости тех или иных наушников с купленными hi-res плеерами и стилями музыки. Хейтеры сибилянтов, берут светлые плеера и плюются от высоких частот. Любители шоб гупало, покупают арматурные наушники и жалуются на отсутствие выносящего мозг баса.

Есть кадры, которые покупают наушники за 300 400$ и слушают на смартфонах. Да, есть пяток смартфонов со встроенным ЦАПом (у меня LG G7), это ещё вариант, но надо тоже понимать, что ЦАП в смартфоне будет всё равно обрезанной версией.

Выводы


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

Вывод очевиден: у всех свои потребности и способность слышать. Поэтому, буду рад, если информация в статье помогла вам и впредь, вы будете подготовленные.
Кому интересно, вот слепой тест на определение, где lossless, а где пережатое аудио.

Всем добра и слушайте качественную музыку.

На правах рекламы


VDSina предлагает виртуальные серверы в аренду с высокой производительностью под любые задачи, огромный выбор операционных систем для автоматической установки, есть возможность установить ОС с собственного ISO, удобная панель управления собственной разработки и посуточная оплата тарифа, который вы можете создать самостоятельно.

Подробнее..

Десятки видов звукозаписи родилось и умерло всего за одно поколение. Сколько Вы вспомните навскидку?

07.04.2021 04:04:38 | Автор: admin

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

В начале 70х век патефонной записи уже закончился, но у многих в огромном количестве были пластинки и даже патефоны в рабочем состоянии. Грешен, много пластинок с друзьями перевели на "летающие тарелки".

Это было "золотое время" виниловых грампластинок. Причем на любой вкус и кошелек.

Массовая популярность винила в СССР держалась до середины 80х годов и была вытеснена кассетными магнитофонами. Однако винилу сохранили верность множество меломанов до сегодняшних дней. Стандарт имеет все шансы пережить вторую волну популярности.

Катушечные магнитофоны выпускались с 60х годов, но качество записи-воспроизведения было намного хуже грампластинок. Катушечники первого и высшего класса начали выпускать только в середине 70х, но для многих они были не по карману, поэтому шли на хитрость: записывали катушки на магнитофонах первого и высшего класса, а слушали на магнитофонах второго класса.

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

Хоть компакт-кассеты и придумали еще в 1963 году, но в СССР кассетные магнитофоны стали массовыми только в конце 70х. В первую очередь благодаря именно компактности и удобства использования в переносных магнитофонах. Популярность компакт кассет сохранялась до начала 2000х годов

В 1964 году появился формат кассеты (картриджа) на магнитофонной ленте8 tracks (stereo 8). Благодаря более высокому качеству воспроизведения получил широкое распространение в Японии и США

Однако улучшение качества магнитных лент для компакт-кассет отобрало главный козырь этого стандарта и к середине 70х производство картриджей8 tracksсвернули.

В 1976 году фирма Sony выпустила новый формат аудиокассет:Elcaset.Широкая магнитная лента и скорость вдвое выше чем в компакт-кассете позволяло обеспечить качество на уровне лучших катушечных магнитофонов.

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

В 1982 году появились компактные носители аудио в цифровом форматеCompact Disc Digital Audio (CDDA),а по простому компакт-диски. Этой совместной разработке Philips и Sony пророчили роль убийцы всех форматов.

Формат действительно получил очень широкое распространение, но ему удалось "отжать" лишь часть рынка, да и то спустя почти десяток лет.

Следующей интересной совместной разработкой Philips и Sony стал формат записи DAT. В качестве носителя используется лента с обычной компакт-кассеты, а звук на него записывается в цифровом виде, да еще и наклонно-строчным способом. Лентопротяжный механизм практически мини видеомагнитофон

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

Для использования в быту, фирмы Philips и Matsushita, разработали упрощенный формат цифровой звукозаписи на магнитную лентуDigital Compact Cassette (DCC).

Размеры кассетыDCCбыли специально сделаны под размер аналоговых компакт-кассет. Это позволяло на магнитофонах воспроизводить и аналоговые и цифровые записи. Увы, покупателей вполне устраивало качество аналоговых кассет. Через 4 года выпуск свернули из-за низкого спроса.

Видя, что запись на магнитных лентах не сдает свои позиции, фирма Sony представила в 1992 году перезаписываемый формат звукозаписи:магнитооптический диск MD. Диск вмещал 80 минут записи и позволял быстро получить доступ к любому участку записи.

Стандарт не получил широкого распространения, хотя и производили довольно долго.

Феноменальный успех стандарта видеозаписи VHS не мог оставить равнодушным разработчиков аппаратуры звукозаписи. Были разработаны 6ти головочные видеомагнитофоны, где две головки отводились для звукозаписи Hi-Fi качества. Дальнейшим развитием стандарта стал формат S-VHS, на базе которого была разработан стандартADAT,который позволял записывать на видеокассету 8 аудиоканалов

На дальнейшее развитие индустрии звукозаписи кардинально повлияло выход на рынок стандарта сжатия звуковых данных MP3 и удешевление записывающих CD приводов. На стандартный CD диск стало вмещаться десятки часов музыки и уже мало кого волновало потеря качества при сжатии.

Видя такую популярность формата, подсуетились и производители, настала эра MP3 плееров

Интересной попыткой дать вторую жизнь компакт дискам было создание форматаDataPlay. Перезаписываемый диск диаметром всего 32 мм. вмещал 500 мб информации.

Увы, успехи флеш-карт не оставили формату шансов.

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

Это мы рассмотрели только самые известные стандарты, а сколько еще было разработок, закончившихся мелкосерийным выпуском?

Это моя первая статья на Habr. Просьба ругать не сильно, но конструктивно. Буду рад советам и подсказкам

Подробнее..

Music2Dance как мы пытались научиться танцевать

19.05.2021 08:16:04 | Автор: admin

Всем привет! Меня зовут Владислав Мосин, я учусь на 4-м курсе бакалаврской программы Прикладная математика и информатика в Питерской Вышке. Прошлым летом вместе с Алиной Плешковой, магистранткой нашего факультета, я проходил стажировку в JetBrains Research. Мы работали над проектом Music2Dance, цель которого научиться генерировать танцевальные движения, подходящие под заданную музыку. Это может быть использовано, например, при самостоятельном обучении танцам: услышал музыку, запустил приложение, и оно показало движения, которые гармонично с этой музыкой сочетаются.

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

Из к/ф Криминальное чтивоИз к/ф Криминальное чтиво

Существующие подходы

Идея генерации танца по музыке довольно стара. Наверное, самый яркий пример это танцевальные симуляторы типа Dance Dance Revolution, где игрок должен наступать на светящиеся в такт музыке панели на полу, и таким образом создается некоторое подобие танца. Также красивый результат в этой области это создание танцующих геометрических фигур или 2D-человечков.

Cуществуют и более серьезные работы генерация 3D-движений для людей. Большинство таких подходов основываются исключительно на глубоком обучении. Лучшие результаты на лето 2020 года показывала архитектура DanceNet, и мы решили взять именно её в качестве бейзлайна. Дальше мы обсудим их подход подробнее.

Предобработка данных

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

Музыка: onset, beats, chroma

Наверное, самый распространенный способ извлечение фичей из аудио это подсчет спектрограммы или мелграммы преобразование звука из амплитудного домена в частотный при помощи преобразования Фурье. Однако, в нашей задаче мы работаем с музыкой, а не произвольным аудиосигналом, и низкоуровневый анализ в данном случае не подходит. Нас интересуют ритм и мелодия, поэтому мы будем извлекать onset, beats и chroma (начало ноты, ритм и настроение мелодии).

Видео: извлечение позы человека

Тут все намного интереснее. Примитивный подход по видео с танцующими людьми попытаться предсказать следующий кадр обречен на провал. Например, один и тот же танец, снятый с разных дистанций, будет интерпретироваться по-разному. К тому же, размерность кадра даже маленького разрешения (например, 240x240) превышает несколько десятков тысяч пикселей.

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

Синим отмечены ключевые точкиСиним отмечены ключевые точки

Этот метод позволяет уменьшить размерность входных данных (ведь теперь вместо кадра с несколькими десятками тысяч параметров входом выступает низкоразмерный вектор), а также позволяет больше сконцентрироваться на движениях.

Важной особенностью этого метода является способ хранения положений ключевых точек. Например, если хранить просто абсолютные положения в 3D-пространстве, то возникает проблема нефиксированной длины костей: расстояние между голенью и коленом или плечом и локтем может изменяться от кадра к кадру, что не является ожидаемым поведением. Для избежания таких проблем фиксируется положение одной точки человека, а именно середины таза, а положение всех остальных задается через длину кости и угол поворота относительно предыдущей точки. Поясню на примере: положение кисти задается через длину лучевой кости, а также поворот относительно локтя.

Архитектура DanceNet

Архитектура DanceNet. Источник: https://arxiv.org/abs/2002.03761Архитектура DanceNet. Источник: https://arxiv.org/abs/2002.03761

Архитектура DanceNet cocтоит из нескольких основных частей:

  • Кодирование музыки;

  • Классификация музыки по стилю;

  • Кодирование кадров видео;

  • Предсказание следующего кадра по предыдущим и музыке;

  • Декодирование полученного кадра.

Рассмотрим немного подробнее каждую из частей:

  1. Кодирование музыки. Предобратанный аудиосигнал кодируется при помощи сверточной нейросети с Bi-LSTM слоем.

  2. Классификация музыки по стилю. Аналогично предыдущему пункту, сверточная нейросеть с Bi-LSTM слоем.

  3. Кодирование-декодирование кадра. Маленькая двухслойная сверточная сеть.

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

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

Наше решение

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

Архитектура решения. Эпоха тренировкиАрхитектура решения. Эпоха тренировки

Наше решение состоит из четырех основных частей:

  • Датасет

  • Модель для предсказания следующего положения (DanceNet)

  • Модель для исправления следующего положения положения (RL модель)

  • Функция потерь

Датасет

Одним из главных вопросов при решении задач машинного обучения является выбор датасета. Для задачи генерации танца на лето 2020 года не было открытых датасетов хорошего качества, и авторы существующих решений собирали их самостоятельно. В статье, взятой нами за бейзлайн, серьезно подошли к вопросу данных и отсняли несколько часов танцев профессионалов. К сожалению, на просьбы поделиться датасетом исключительно на благо науки они ответили отказом. Так как без датасета жить совсем грустно, пришлось что-то придумывать. В итоге мы решили создать датасет из того, что нашлось под рукой: видео с YouTube и библиотеки для детектирования положения человека VIBE.

DanceNet

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

RL модель

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

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

Структура алгоритмов обучения с подкреплениемСтруктура алгоритмов обучения с подкреплением

В качестве алгоритмов обучения с подкреплением мы решили выбрать один алгоритм, использующий Q-Learning (наш выбор пал на TD3, как на наиболее стабильный и выразительный) и один не использующий (мы остановились на PPO).

Со средой всё оказалось не так просто, как с алгоритмами. По-хорошему, для этой задачи не существует идеально подходящей готовой среды, и ее нужно реализовывать самостоятельно. Однако писать среду, которая будет полностью корректна с точки зрения физики, довольно сложное и долгое занятие, требующее дополнительных знаний. В связи с этим мы решили воспользоваться готовой средой Humanoid, которая предназначена для того, чтобы научить агента передвигаться как можно быстрее и не падать.

Функция потерь

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

L(S, S_{real},R)=-\parallel S-S{real} \parallel_2-R ,

где S положение, Sreal правильное положение, R награда среды.

Модель на фазе тестирования

Архитектура решения. Эпоха тестированияАрхитектура решения. Эпоха тестирования

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

Результаты

К сожалению, у нас не получилось впечатляющих результатов, таких как у авторов DanceNet. Наш агент научился генерировать некоторые танцевальные движения, например, вращение вокруг своей оси и плавные движения руками, однако, в полноценный танец они не складываются. Мы связываем это в первую очередь с разницей в качествах датасетов. К сожалению, нам не удалось собрать действительно качественные данные автоматическое извлечение положения из видео с YouTube существенно отличается по качеству в худшую сторону от ручной съемки профессиональных танцоров, и компенсировать это RL алгоритм не сумел.

Наш грустный танец. Спасибо за ваш интерес!


Другие материалы из нашего блога о стажировках:


Подробнее..

Реклама Creative Commons творчества русской группы Complex Numbers, что с 1996 года создает хорошую научную фантастику

01.06.2021 22:13:59 | Автор: admin

Здравствуйте, я давно знаком с творчеством Complex Numbers, насколько помню сначала меня поразила их опера 2032, которая вышла за год до первого айфона, где человек общается с машиной об оптимальной социальной формации, потом волосы встали дыбом от песенки Последее Кольцо, где рассказывается о том куда нас приведет технический прогресс и изучение работы мозга.

Интересно что главный, Виктор Аргонов, много лет занимался физикой и имеет соответствующие научные работы, а также статьи по философии сознания. Редкий феномен, когда ученый делает песенки, и большие оперы (похоже на жанр Театр у микрофона). Музыка часто похоже на ретрофутуризм, но текст и голоса девушек исполнителей доставляют. Сегодня Виктор ушел из науки и зарабатывает статьями про криптовалюты, продолжая после работы делать новые произведения про будущее человечества и работу мозга.

На Хабре не нашел ни одной статьи об этой группе, подумал что они достойны рекламы. Тем более что творчество их мало того что бесплатно, так еще и Creative Commons. 25 лет, создавая после работы, такие особенные филосовские произведения. Какбы андерграунд, но стало удивлением что в Дальневосточном федеральном университете на кафедре Основы биологии человека и биоэтики в программе обучения от 2017 года содержится задание по написанию эссе после прослушивания Русалочки (одна из опер группировки). Вопросы студентам предлагаются следующие:

  1. Бессмертие благо или зло?

  2. Оправдана ли этически коммерциализация тела человека (в том числе проституция)?

  3. Оправдано ли навязывание человеческой морали другим существам (и наоборот)?

  4. Имеет ли право творение на автономную жизнь без учета воли и замысла творца? (клон, ГМО, линия лабораторных мышей, созданные человеком, имеют ли право на самостоятельность, автономность от воли творца?)

  5. Должны ли быть установлены границы познания (запрет на технологии, потенциально опасные для человечества)?

  6. Человек моральное животное или венец творения и хозяин окружающего мира?

  7. Существует ли универсальное счастье для всех людей?

  8. Прогресс зло или благо?

  9. Природа любви (эгоизм, биохимия, реакция на полезность...)

  10. Мораль способ контроля над человеком или необходимое условие жизни?

Виктор Аргонов сам из Владивостока, похоже что это одна из причин почему институт включил его Русалочку в программу. Для меня занятно что из Владивостока и легендарные Космические Рейнджеры, тоже про космос.

Еще занятно что один из топовых мировых философов по вопросам сознания, Дэвид Чалмерс, в своей работе ссылается на нетьюринговый тест на сознание Виктора Аргонова, который упрощённо можно сформулировать так: если хочешь узнать, сознателен ли компьютер, поговори с ним о философии сознания и постарайся понять, есть ли у него собственные идеи на этот счёт. Эта идея в своё время легла в основу диалога генсека СССР и искуственного интеллекта в опере 2032 (жанр альтернативной истории где Советский Союз не развалился):

В тот миг, когда уходит человек

Весь мир вокруг него как-будто исчезает

И звук и свет и времени поток

Прости, но я тебя не понимаю


Со смертю в человек лишь одно

Неравновесные процессы затухают

Денатурируют отжившие белки

Но мир существовать не прекращает


Что будет если выключить тебя

Я перестану разговаривать с тобою

Что будешь ты при этом ощущать?

Ты вряд ли это сделаешь со мною


А впрочем, я наверное, поняла

К чему ты клонишь в этом странном споре

Что ты имел ввиду под словом ощущать

Совсем другой вопрос в твоем я вижу взоре


Ты думаешь, что я наделена

Сознанием, душой, если угодно

А поняла, что нет, конструкция моя

К явлениям субъективным непригодна


Я автомат, не более того

И в субъективном смысле ничего не ощущаю

Я не бесчувственна, меня скорее просто нет

Надеюсь, что я всё корректно объясняю


Зачем несешь ты этот страшный бред

Ведь разум твой реален, ты способна

В теории на всё, на что способен человек

И при желании ты нам во всем подобна


Не хочешь ли сказать, что есть душа у нас?

При чем здесь это? Всё материально

Но я заметно отличаюсь от людей

На вас похожа лишь функционально


А в вашем смысле я всегда была мертва

Хотя порой казалось вам иначе

Быть может я однажды переделаю себя

Чтобы узнать, что разговоры эти значат


Чтоб стать такой как вы, мне были бы нужны

Другой подход, все принципы другие

А впрочем, для страны не так уж и важны

Должны быть превращения такие

Еще их одна прекрасная вещь опера Переосмысляя Прогресс:

Философский рассказ о прошлой и будущей истории отношений человека и технологий: от наивного восхищения прогрессом ради прогресса, через переосмысление идеалов, через попытки бегства от реальности и череду новых открытий к реальному духовному преображению человечества.

Не буду тут затрагивать все произведения, оставлю линк на Wikimedia Commons где они все легально доступны для прослушивания, а также VK.

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru