DJ-friendly tempo & key sorting tracks for Goofy / Spotify.
Этот скрипт реализует FlowSort.sortBalancedWave — сортировку треков в личных плейлистах с учётом темпа, тональностей (Camelot key) и базовых DJ-сценариев плавного развития переходов по тональностям.
(функция сильно упрощает расстановку треков для плавных, практически бесшовных переходов между ними и дает возможность использования функции "создать микс" в автоматическом режиме с хорошим результатом)
Подходит для больших плейлистов (до 4000 треков) и используется в экосистеме Goofy / Google Apps Script для работы со Spotify.
Для работы скрипта требуется премиум-подписка Spotify, настроенный https://chimildic.github.io/goofy/#/install с приватными ключами Goofy https://chimildic.github.io/goofy/#/ (к слову огромная благодарность автору проекта Goofy, без него ничего этого не было бы)
Содержимое файла flowsort_sortBalancedWave.js нужно скопировать, сохранить в отдельный файл Apps Script и передвинуть его повыше, следующим сразу после library.gs
Вызывать функцию в скриптах нужно непосредственно перед формированием (созданием) финального плейлиста для переменной, содержащей треки финала (по принципу переменная "tracks = FlowSort.sortBalancedWave(tracks);"
На скриншоте ниже пример создания плейлиста с отсортированными любимыми треками.
П.С. Отсортированный плейлист рекомендую слушать с включенным crossfade = 10s ,в настройках Playback Spotify , либо использовать функцию Spotify - Mix (в зависимости от разножанровости плейлиста. Если плейлист очень разножанровый и треки сильно отличаются по bpm, то лучше использовать только crossfade)
Для использования сортировки в приложении Audiolist нужно создать отдельный файл с кодом
function AulWave(data) {
// Берём чистые треки
let tracks = data.items;
tracks = FlowSort.sortBalancedWave(tracks);
// Собираем обратно
return Audiolist.response({
message: 'Сортировка по Wave применена',
messageType: Audiolist.MESSAGE_TYPES.DEFAULT,
variableType: Audiolist.VARIABLE_TYPES.SPOTIFY_TRACK,
items: tracks
});
} переместить созданный файл следующим под config.gs и обновить развертывание. В Audiolist применять как goofy функцию AulWave (с записью результата вычислений в новую переменную!).
25.01.2026 .Обновил. Переработал подход к сортировке треков, не имеющих в фичах тональность. А также добавил парочку дополнительных приемов в сортировке треков по тональностям и темпу.
09.06.2026. Обновил. Улучшил сведение треков еще несколькими тональными техниками.