Об этом проекте
DSPark — это библиотека аудио DSP на C++20, состоящая только из заголовочных файлов, предназначенная для разработчиков, создающих аудиопрограммное обеспечение реального времени и офлайн. Она включает эффекты, фильтры, синтез и спектральные компоненты, инструменты анализа и музыки, нативный файловый ввод/вывод и опциональный слой плагинов. Модули фреймворка не имеют сторонних зависимостей и не требуют отдельно компилируемой библиотеки DSPark; оптимизированные пути могут использовать SIMD-интринсики, предоставляемые компилятором, за защитными проверками платформы. Адаптеры плагинов и приложение DSParkLab, доступное только для Windows, находятся вне основного заголовочного файла и имеют свои требования к интеграции с платформой.
Интеграция проста: добавьте репозиторий в проект, укажите его в пути включения и включите основной заголовочный файл. Целевой объект CMake предоставляет путь включения и требование C++20, а проект также можно использовать через find_package или FetchContent. Процессоры создаются и настраиваются с помощью prepare(AudioSpec) перед тем, как владелец аудиопотока вызовет processBlock(); в хосте можно создать AudioBufferView поверх указателей каналов, принадлежащих хосту, чтобы избежать выделения памяти в callback.
Области возможностей включают фильтры и эквалайзеры (Biquad, StateVariableFilter, LadderFilter, FilterEngine, Equalizer, CrossoverFilter); динамику и контроль уровня (Compressor, Limiter, NoiseGate, Expander, DynamicEQ, MultibandCompressor, DeEsser); нелинейное и аналоговое моделирование (Saturation, Clipper, TapeMachine, TubePreamp, TransformerModel, wdf::*); обработку времени, высоты тона и пространства (Delay, AlgorithmicReverb, Reverb, PitchShifter, TimeStretch, PitchCorrector, GranularProcessor); спектральную обработку (FFTReal, Convolver, ZeroLatencyConvolver, SpectralProcessor, SpectralFreeze, SpectralDenoiser); анализ и измерение (SpectrumAnalyzer, LoudnessMeter, LoudnessNormalizer, PitchDetector, OnsetDetector, BeatTracker, LoopFinder); синтез и музыку (Oscillator, WavetableOscillator, ADSREnvelope, ChordDetector, KeyDetector, harmony::*); и инфраструктуру (AudioBuffer, ProcessorChain, Resampler, Oversampling, Dither, SpscQueue, версионированные блобы состояния).
Файловый ввод/вывод охватывает чтение/запись WAV и MP3, чтение/запись Standard MIDI File (чтение форматов 0, 1, 2; запись 0 и 1) и только нативное декодирование FLAC, при этом операции записи возвращают false. Определение DSPARK_NO_FILE_IO исключает все заголовки файлового ввода/вывода для платформ без поддержки файловой системы. Разработка плагинов поддерживается через нативные адаптеры VST3 и CLAP, а также macOS Audio Unit v2, охватывающие параметры, автоматизацию, состояние, задержку, отчеты о хвосте, обход, моно/стерео раскладки, боковые цепи, транспорт, MIDI-инструменты, офлайн-рендеринг и заводские пресеты; пользовательские редакторы можно писать на HTML/CSS/JavaScript и встраивать через слой WebView платформы, при этом на Linux требуется WebKitGTK во время выполнения.
Безопасность реального времени документирована как контракт для каждого метода, а не как общее свойство: конструкция, prepare(), восстановление состояния и настройка только для конфигурации могут выделять память и не должны выполняться одновременно с обработкой; подготовленный процессор имеет одного владельца аудиопотока; публикация параметров обычно предполагает одного писателя управления и одного владельца аудио. Матрица CI v1.7.0 охватывает Windows (MSVC x64/ARM64), Linux (GCC x64/ARM64, Clang x64), macOS (Clang ARM64), WebAssembly (Emscripten scalar и SIMD128) и встроенный компиляционный шлюз с отключенными файловым вводом/выводом, исключениями и RTTI; iOS и Android поддерживаются заголовками, но не имеют выделенных заданий CI. CI также проверяет самодостаточность установленных заголовков, сборки без предупреждений, санитайзеры, пути одновременной публикации, примеры, смоук-хосты и валидаторы плагинов, а также сгенерированную документацию. Официальное задание EBU loudness-vector выполняется по мере возможности, поскольку лицензированный тестовый материал загружается отдельно.
DSParkLab — это приложение Win32/Direct3D 11 только для Windows для интерактивного тестирования процессоров; его встроенные исходники Dear ImGui и miniaudio ограничены приложением и не являются зависимостями фреймворка. Документация включает сгенерированный справочник API, поваренную книгу, ориентированную на задачи, отдельные примеры, руководство по плагинам, модель потоков, таблицу показателей качества с измеренными настройками и оговорками, руководство по миграции v1.7.0 и журнал изменений. v1.7.0 добавляет музыкальные инструменты синхронизации и редактирования, обработку высоты тона и спектра, декодирование FLAC и поддержку MIDI-файлов без зависимостей, а также обновления публичного контракта, такие как окна анализа с учетом частоты дискретизации и коэффициенты биквадратных фильтров двойной точности. Проект лицензирован под MIT и поддерживается Кристианом Морези.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.