Sobre o projeto
DSPark é uma biblioteca de DSP de áudio em C++20 apenas com cabeçalhos, voltada para desenvolvedores que criam software de áudio em tempo real e offline. Ela reúne efeitos, filtros, blocos de construção de síntese e espectrais, ferramentas de análise e musicais, E/S de arquivos nativa e uma camada de plugin opcional. Os módulos do framework não possuem dependências de terceiros e não exigem uma biblioteca DSPark compilada separadamente; caminhos otimizados podem usar intrínsecos SIMD fornecidos pelo compilador por trás de proteções de plataforma. Os adaptadores de plugin e o aplicativo DSParkLab, exclusivo para Windows, ficam fora do cabeçalho abrangente e possuem seus próprios requisitos de integração de plataforma.
A integração é simples: incorpore o repositório, adicione-o ao caminho de inclusão e inclua o cabeçalho abrangente. Um alvo de interface CMake fornece o caminho de inclusão e o requisito de C++20, e o projeto também pode ser consumido via find_package ou FetchContent. Os processadores são construídos e configurados com prepare(AudioSpec) antes que um proprietário de fluxo de áudio chame processBlock(); em um host, um AudioBufferView pode ser criado sobre ponteiros de canal pertencentes ao host para evitar alocação no callback.
As áreas de capacidade incluem filtros e equalização (Biquad, StateVariableFilter, LadderFilter, FilterEngine, Equalizer, CrossoverFilter); controle de dinâmica e nível (Compressor, Limiter, NoiseGate, Expander, DynamicEQ, MultibandCompressor, DeEsser); modelagem não linear e analógica (Saturation, Clipper, TapeMachine, TubePreamp, TransformerModel, wdf::*); processamento de tempo, tom e espacial (Delay, AlgorithmicReverb, Reverb, PitchShifter, TimeStretch, PitchCorrector, GranularProcessor); processamento espectral (FFTReal, Convolver, ZeroLatencyConvolver, SpectralProcessor, SpectralFreeze, SpectralDenoiser); análise e medição (SpectrumAnalyzer, LoudnessMeter, LoudnessNormalizer, PitchDetector, OnsetDetector, BeatTracker, LoopFinder); síntese e música (Oscillator, WavetableOscillator, ADSREnvelope, ChordDetector, KeyDetector, harmony::*); e infraestrutura (AudioBuffer, ProcessorChain, Resampler, Oversampling, Dither, SpscQueue, blobs de estado versionados).
A E/S de arquivos abrange leitura/escrita de WAV e MP3, leitura/escrita de Standard MIDI File (formatos 0, 1, 2 para leitura; 0 e 1 para escrita) e apenas decodificação nativa de FLAC, com operações de escrita retornando false. A definição de DSPARK_NO_FILE_IO omite todos os cabeçalhos de E/S de arquivos para alvos sem suporte a sistema de arquivos. O desenvolvimento de plugins é suportado por meio de adaptadores nativos VST3 e CLAP, além de Audio Unit v2 para macOS, cobrindo parâmetros, automação, estado, latência, relatório de cauda, bypass, layouts mono/estéreo, sidechains, transporte, instrumentos MIDI, renderização offline e presets de fábrica; editores personalizados podem ser escritos em HTML/CSS/JavaScript e incorporados via camada WebView da plataforma, com WebKitGTK necessário em tempo de execução no Linux.
A segurança de tempo real é documentada como um contrato por método, e não como uma propriedade geral: construção, prepare(), restauração de estado e configuração exclusiva de inicialização podem alocar memória e não devem ser executadas concorrentemente com o processamento; um processador preparado possui um proprietário de fluxo de áudio; a publicação de parâmetros normalmente assume um escritor de controle e um proprietário de áudio. A matriz de CI do v1.7.0 abrange Windows (MSVC x64/ARM64), Linux (GCC x64/ARM64, Clang x64), macOS (Clang ARM64), WebAssembly (Emscripten escalar e SIMD128) e um portão de compilação embarcado com E/S de arquivos, exceções e RTTI desativados; iOS e Android são alvos dos cabeçalhos, mas não possuem jobs de CI dedicados. A CI também verifica a autossuficiência dos cabeçalhos instalados, builds sem avisos, sanitizadores, caminhos de publicação concorrentes, exemplos, hosts de smoke test de plugins e validadores, e documentação gerada. O job oficial de vetor de loudness EBU é de melhor esforço porque o material de teste licenciado é baixado separadamente.
DSParkLab é um aplicativo Win32/Direct3D 11 exclusivo para Windows, destinado a testes interativos de processadores; suas fontes Dear ImGui e miniaudio incluídas estão confinadas ao aplicativo e não são dependências do framework. A documentação inclui uma referência de API gerada, um cookbook orientado a tarefas, exemplos autônomos, um guia de plugins, um modelo de threading, uma tabela de métricas de qualidade com configurações medidas e ressalvas, um guia de migração v1.7.0 e um changelog. A v1.7.0 adiciona ferramentas de edição e temporização musical, processamento de tom e espectral, decodificação de FLAC sem dependências e suporte a arquivos MIDI, além de atualizações de contrato público, como janelas de análise sensíveis à taxa e coeficientes de biquad de precisão dupla. O projeto é licenciado sob MIT e mantido por Cristian Moresi.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.