en / ru
Концерт для оркестра общественного транспорта в четырёх частях
В исполнении коллектива водителей Краснодарского трамвайно-троллейбусного управления

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

Любое живое выступление, это эхо однажды задуманного, отрепетированного, выученного.

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

В любом случае, музыка — это эхо некоторой мысли.

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

I Микротональная композиция на четвертитонах
II Хор машин
III Незадолго перед окончанием войны
IV Тревожные поиски ускользающих структур в окрестностях унисона

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

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

Примерно после 22:00 по московскому времени количество транспорта начинает резко сокращаться, делая звук менее динамичным и более скудным, поэтому ночное время не рекомендуется для прослушивания.



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

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

В программировании и криптографии существует термин “псевдослучайность”. Ведь мы понимаем, что машина не может генерировать случайные числа — она генерирует только то, что ей строго предписано. Поэтому компьютер или смартфон могут генерировать только псевдослучайные величины: то есть, берётся некий внешний процесс, с ним проводятся некие математические операции, которые в определённом приближении дают числа, похожие на случайные. Например, в большинстве браузеров псевдослучайные величины генерируются на основе текущего времени (вплоть до миллисекунд), в которое был вызван метод генерирующий эти величины. Теоретически, мы можем предсказать любую такую величину в любой момент времени. Однако, довольно сложно вызвать метод ровно в ту самую, нужную миллисекунду, чтобы получить нужное псевдослучайное число. Да и в целом мы понимаем, что для тех задач, где эти числа генерируются, никто такими вычислениями заниматься попросту не будет.

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

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

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

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

А если представить, что у нас есть сервис, осуществляющий слежку за транспортом по сигналам GPS/ГЛОНАСС и отображающий движение транспорта на экране, то абсолютно случайное событие может трансформироваться в абсолютно детерминированное при первом же взгляде на экран (при условии, конечно, что сервис работает корректно).

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

В одной консерватóрской диссертации было найдено следующее:
“Я. Ксенакис приравнивал понятия «алеаторики», «случайности» и «импровизации», отдавая предпочтение последнему: «”алеаторика”, по сути “музыкальная импровизация” означает, что исполнителю оставлен выбор». По его мнению, «выражение “алеаторная музыка” в действительности означает импровизируемая музыка. Использование слова “алеаторика”, в его научном смысле означающее “случайность”, вместо импровизации совершенно неправильно и выражает ложную и сентиментальную позицию». Но термин «импровизация» имеет устоявшееся значение как искусство музицирования, создания произведения непосредственно в процессе исполнения музыки. Импровизация в народной, джазовой или восточной религиозной музыке может быть обусловлена каким-либо контекстом (художественный вкус и опыт исполнителя, его навыки, техника игры и знания в области музыкальных жанров, стилей, методов сочинения, наконец, эстетических принципов), но не предопределена никем, кроме самого исполнителя. Импровизация же алеаторной музыки (например, графических или вербальных партитур) представляет особый род исполнительского искусства, который можно скорее назвать свободной интерпретацией авторского замысла. Сам термин «импровизация» не может служить синонимом «алеаторике».”

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

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



Техническое описание

Алгоритм регулярно получает данные о движении общественного транспорта с сервера в Латвии, предоставляющего эти данные нескольким транспортным сервисам в нескольких городах России и прибалтики, и парсит эти данные в несколько массивов, в которых содержится информация о скорости, типе транспорта, маршруте и координатах. Далее, на основе этих данных отрисовываются маркеры движущегося транспорта на карте.

Параллельно с этим алгоритм генерирует массив частот тонов в рамках равномерно темперированного строя:
- для первой части: от ноты ре малой октавы (146.8324 Гц) вверх в четвертитоновом строе (24 ноты в октаве);
- для второй части: от ноты ля контроктавы (55.0000 Гц) вверх в семиступе́нном строе (7 нот в октаве);
- для третьей части: от ноты ля контроктавы (55.0000 Гц) вверх в восьминатоновом строе (48 нот в октаве);
- для четвёртой части: от ноты си первой октавы (493.8832 Гц) вверх в трёхсотступе́нном строе (300 нот в октаве);

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

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

В третьей и четвёртой частях расстояние между тонами фиксированное.

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

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

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

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

Использованные технологии: html, sass, js, Web Audio API, Leaflet + OpenStreetMap + Stamen.

Записи выступлений можно посмотреть в плейлисте на Youtube, послушать на Bandcamp, Soundcloud и vk, либо скачать из облака.

Исходный код доступен на GitHub.

Выступления:
20.03.21 @ Крипторейв (Санкт-Петербург)
02.07.21 @ Теплица (Краснодар)

Эссе Александра Гончаренко об Оркестре

По любым вопросам: hello@stranno.su

Concerto for public transport orchestra in four movements
Performed by the collective of drivers of the Krasnodar Tram and Trolleybus Department

Any musical album (or separate track), is always a recording, an echo of once played, synthesized, sounded.

Any live performance is an echo of once conceived, rehearsed, learned.

Any live improvised performance is an echo just like the previous one, but a short one - only the time from decision to performance is reduced.

In any case, music is an echo of some thought.

A new project from DFAP now offers to listen as music not the found sounds of everyday life, but data about the movement of public transport. Each of the links below leads to a website that pulls in "live" data about the speed and coordinates of traffic, and runs an algorithm that interprets (sonification) that data.

I Microtonal composition on quarter tones
II The chorus of machines
III Shortly before the end of war
IV An alarming search for elusive structures in the vicinity of unison

The music album here is presented as a set of hyperlinks, the compositions have no fixed duration, the algorithm conducts the data and voices it right before your eyes based on information arising right now. Right at your device, be it a smartphone or a laptop, it is not a recording that sounds, but precisely a live improvised performance*.

At the time of publication of this text, the administration of the Krasnodar Tram and Trolleybus Department is not made aware of this project (forced collaboration), in connection with which the drivers of the transport do not suspect that every time they press the pedal of their car they control some other processes.

Approximately after 22:00 Moscow time the amount of traffic begins to decline dramatically, making the sound less dynamic and more sparse, so the night time is not recommended for listening.



* Randomness is some simplification, a concealment of a series of events that lead to a definite result; it is through concealment that a definite result turns into an indefinite one.

Truly random processes are considered to be quantum processes, or processes somehow related to microcosm, which postulate that it is fundamentally impossible to "look under the hood" of processes occurring at this level, and impossible to embrace them all at once (for example, Heisenberg uncertainty principle, which, simply put, states that the more precisely we calculate some values, the more others elude us).

In programming and cryptography, there is a term "pseudorandomness. After all, we understand that a machine cannot generate random numbers - it generates only what it is strictly instructed to generate. Therefore, a computer or a smartphone can only generate pseudorandom values: that is, some external process is taken, some mathematical operations are performed with it, which in a certain approximation numbers similar to random. For example, in most browsers, pseudorandom values are generated based on the current time (down to milliseconds) at which the method generating these values was called. Theoretically, we can predict any such value at any point in time. However, it is quite difficult to call the method at exactly the right millisecond to get the desired pseudorandom number. And in general, we understand that for those tasks where these numbers are generated, no one will simply do such calculations.

It follows that the computer generates very specific quantities, quite predictable and deterministic, but we call them random under some assumption.

Does the movement of public transportation occur at random? When we stand at a bus stop and see a vehicle pulling up, we think that it is the vehicle that "fell out" by chance; in fact, waiting at a bus stop is a game of roulette, at least until the "winning" route number, the one for which we came to the bus stop, comes up.

Although in fact we understand that all transport most likely moves according to a pre-formulated schedule and follows a more or less strict order, and if it does not - it is the specific circumstances on the road, traffic jams, accidents, breakdowns and so on.

That is to say, if you monitor the schedule and the situation on the road, the randomness is somewhat dissipated.

And if we imagine that we have a service that monitors transport using GPS/GLONASS signals and displays traffic on the screen, then completely random event can be transformed into a completely deterministic at the first glance at the screen (assuming, of course, that the service works correctly).

Continuing this line of reasoning, we can go to an extreme and say that in our everyday life there is no randomness in the original sense, but there is only pseudorandomness, and therefore aleatorics is impossible (at least, if it is not based on quantum processes, using hardware random number generators).

In someone dissertation the following was found:
“Y. Xenakis equated the concepts of 'aleatorics,' 'chance,' and 'improvisation,' favoring the latter: "'aleatorics', in essence 'musical improvisation' means that the performer is left with a choice." In his opinion, "the expression 'aleatoric music' actually means improvised music. The use of the word 'aleatoric,' in its scholarly sense meaning 'accidental,' instead of improvisational, is totally wrong and expresses a false and sentimental position." But the term "improvisation" has a well-established meaning as the art of music-making, the creation of a work directly in the process of performing music. Improvisation in folk, jazz or oriental religious music may be conditioned by some context (artistic taste and experience of the performer, his skills, playing technique and knowledge of musical genres, styles, composing methods, finally, aesthetic principles), but is not predetermined by anyone but the performer himself. The improvisation of aleatoric music (for example, graphic or verbal scores) represents a special kind of performing art, which can rather be called a free interpretation of the author's idea. The term 'improvisation' itself cannot serve as a synonym for 'aleatorics'."

However, it seems that this "performance context", genre, tradition, and cultural situation as a whole constitute together a "composer of composers", which, to a certain extent, predetermines the actions of the composer or improvising performer. Or, in more technical terms, a genre is a certain API, a set of properties, methods and ways of addressing them, a set of ready-made algorithms, by addressing which we "access" certain sounds.

In any case, no matter how strictly or freely we interpret the terms, no matter how much we reason about the nature of randomness or predetermination, we can always question the randomness of the random and the determinacy of the deterministic, and thus we can question the aleatoriness of any composition. The concerto for orchestra also finds itself in an intermediate position: on the one hand we get completely unpredictable behavior at first glance of the algorithm's work, on the other hand the order of its work is strictly defined, and the traffic is not so chaotic. However, the algorithm makes all the musical decisions at the last moment, just as the drivers who drive their cars make decisions "right now", focusing on the situation on the road. And although these decisions can be predictable in general, we cannot predict them precisely, and the time from the decision to its pronunciation is quite short, so we can call the Concerto compositions as improvisations with a certain degree of liberty.



Technical description

The algorithm regularly receives data about the movement of public transport from a server in Latvia, which provides this data to several transportation services in several cities in Russia and the Baltic States, and read the data into several arrays, which contain information about the speed, type of transport, route and coordinates. Then, based on this data, markers of moving vehicles are drawn on the map.

In parallel, the algorithm generates an array of tone frequencies within a equally tempered scale:
- for the first part: from the small octave note D (146.8324 Hz) upwards in a quarter-tone scale (24 notes per octave);
- for the second part: from the note A of the contra-octave (55.0000 Hz) upwards in semitone scale (7 notes per octave);
- for the third part: from the note in A of the contra-octave (55.0000 Hz) upwards in an eighth-tone scale (48 notes per octave);
- for the fourth part: from the B note of the first octave (493.8832 Hz) upwards in 300-tone scale (300 notes per octave);

In the following, the algorithm will map each of the tones to a velocity in km/h such that the higher the velocity, the higher the tone.

The first two parts calculate the average traffic speed and monitor its change. If the average traffic speed in the city increases, the distance between tones over time decreases (tones are played more often). In case the average traffic speed decreases, the distance between tones increases (tones are played less frequently).

In the third and fourth parts, the distance between tones is fixed.

All issues related to transport data are handled by the entity (javascript method) transportSupervisor, which acts as a dispatcher, observing the traffic of each public transport salon in the city.

TransportSupervisor passes all this data to another entity, orchestraConductor, which performs the tasks of a conductor, a sound manager who makes the final decision about which sounds, in what order, of what duration and frequency will be played at each moment in the composition. Having determined the frequency of the tone and the duration to the next, the conductor passes this data to a third entity, the toneGenerator, whose task is to generate a fading sine wave within the specified parameters.

The salons whose tone is being played at the moment are highlighted on the map. A detailed description of all of the conductor's actions and a report on the movement of transport can be observed in the score, which is formed right during the performance.

(although it could be argued about score: if we proceed from the fact that the score is an algorithm of actions for extracting sounds, then the program code itself can be called a score, which determines the sound; on the other hand, the score can be understood as a record of notes that actually sounded in a particular sequence, which is in fact a textual documentation of the composition)

Technologies are used: html, sass, js, Web Audio API, Leaflet + OpenStreetMap + Stamen.

Recordings of the performances can be seen on the playlist at Youtube, listen in Bandcamp, Soundcloud and vk, or download from cloud.

The source code is available at GitHub.

Performances:
20.03.21 @ Cryptorave (Saint-Petersburg)
02.07.21 @ Teplitsa (Krasnodar)

For any questions: hello@stranno.su