Об этом проекте
Waveform Playlist — это многодорожечный аудиоредактор и плеер для браузера, построенный на React, Tone.js и Web Audio API. Он отрисовывает волновые формы на canvas и поддерживает редактирование клипов перетаскиванием, что делает его веб-альтернативой настольным редакторам вроде Audacity.
Основные возможности, описанные в README:
- Многодорожечное редактирование: несколько клипов на дорожку, перетаскивание для перемещения и маркеры для обрезки.
- Визуализация волновых форм: отрисовка на canvas с управлением масштабом, а также опциональные предварительно вычисленные пики для более быстрой загрузки.
- Эффекты: библиотека эффектов Tone.js (реверберация, задержка, фильтры, дисторшн и другие) с управлением параметрами в реальном времени и мастер-цепочкой эффектов.
- Запись: захват на основе AudioWorklet с предпросмотром волновой формы в реальном времени, VU-индикацией, наложением и заменой в режиме punch-in в варианте Web Components.
- Экспорт: экспорт в WAV отдельных дорожек или полного микса с отчётом о прогрессе.
- Аннотации: синхронизированные по времени текстовые аннотации с навигацией с клавиатуры и редактированием перетаскиванием.
- MIDI: разбор MIDI-файлов, визуализация в виде пиано-ролла и воспроизведение через SoundFont или PolySynth.
- Темы: настраиваемые темы с тёмным и светлым режимом.
- TypeScript: включены определения типов.
Использование основано на компонентах. Типичная конфигурация оборачивает интерфейс в WaveformPlaylistProvider, передаёт дорожки, созданные через createTrack и createClipFromSeconds, и компонует PlayButton, PauseButton, StopButton и Waveform. Хуки покрывают загрузку аудио (useAudioTracks), управление транспортом (usePlaylistControls), анимацию воспроизведения, масштабирование, динамические эффекты и экспорт в WAV. Tone.js и @dnd-kit/react — это peer-зависимости, устанавливаемые отдельно.
Проект организован как набор пакетов: браузерные компоненты и хуки, основные типы и утилиты, независимый от фреймворка движок таймлайна, стилизованные UI-компоненты, движок воспроизведения на Tone.js и извлечение пиков. Опциональные пакеты добавляют MIDI, аннотации, запись, общие процессоры AudioWorklet, отрисовку спектрограммы и воспроизведение на основе HTMLMediaElement с сохранением высоты тона при изменении скорости.
Экспериментальный слой Web Components (на основе Lit, без необходимости React) предлагает декларативные элементы daw-track и daw-clip, императивный API редактора, выбор адаптера между нативным Web Audio и Tone.js, перемещение, обрезку и разделение клипов с обнаружением коллизий, отмену и повтор, сочетания клавиш, перетаскивание файлов, метроном со смешанными размерами и изменениями темпа, автоматизацию темпа и хостинг плагинов WAM 2.0 с опциональной компиляцией Faust DSP в браузере. Документ спецификации описывает каталог элементов и этапы миграции.
Документация включает живые интерактивные примеры, руководства по началу работы и справочник по API. Поддержка браузеров требует современной реализации Web Audio API (Chrome, Firefox, Safari, Edge). Проект распространяется под лицензией MIT и берёт начало в проекте Airtime в Sourcefabric.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.