À propos du projet
DSPark est une bibliothèque audio DSP C++20 header-only destinée aux développeurs qui créent des logiciels audio temps réel et hors ligne. Elle regroupe des effets, des filtres, des briques de synthèse et de traitement spectral, des outils d'analyse et musicaux, des E/S de fichiers natives et une couche de plugins optionnelle. Les modules du framework n'ont aucune dépendance tierce et ne nécessitent aucune bibliothèque DSPark compilée séparément ; les chemins optimisés peuvent utiliser des intrinsèques SIMD fournies par le compilateur derrière des gardes de plateforme. Les adaptateurs de plugins et l'application DSParkLab, réservée à Windows, se situent en dehors de l'en-tête parapluie et ont leurs propres exigences d'intégration de plateforme.
L'intégration est simple : intégrez le dépôt, ajoutez-le au chemin d'inclusion et incluez l'en-tête parapluie. Une cible d'interface CMake fournit le chemin d'inclusion et l'exigence C++20, et le projet peut aussi être consommé via find_package ou FetchContent. Les processeurs sont construits et configurés avec prepare(AudioSpec) avant qu'un propriétaire de flux audio appelle processBlock() ; dans un hôte, un AudioBufferView peut être créé au-dessus de pointeurs de canaux appartenant à l'hôte pour éviter toute allocation dans le callback.
Les domaines de capacités incluent les filtres et l'égalisation (Biquad, StateVariableFilter, LadderFilter, FilterEngine, Equalizer, CrossoverFilter) ; la dynamique et le contrôle de niveau (Compressor, Limiter, NoiseGate, Expander, DynamicEQ, MultibandCompressor, DeEsser) ; la modélisation non linéaire et analogique (Saturation, Clipper, TapeMachine, TubePreamp, TransformerModel, wdf::*) ; le traitement temporel, de hauteur et spatial (Delay, AlgorithmicReverb, Reverb, PitchShifter, TimeStretch, PitchCorrector, GranularProcessor) ; le traitement spectral (FFTReal, Convolver, ZeroLatencyConvolver, SpectralProcessor, SpectralFreeze, SpectralDenoiser) ; l'analyse et le metering (SpectrumAnalyzer, LoudnessMeter, LoudnessNormalizer, PitchDetector, OnsetDetector, BeatTracker, LoopFinder) ; la synthèse et la musique (Oscillator, WavetableOscillator, ADSREnvelope, ChordDetector, KeyDetector, harmony::*) ; et l'infrastructure (AudioBuffer, ProcessorChain, Resampler, Oversampling, Dither, SpscQueue, blobs d'état versionnés).
Les E/S de fichiers couvrent la lecture/écriture WAV et MP3, la lecture/écriture de fichiers MIDI standard (formats 0, 1, 2 en lecture ; 0 et 1 en écriture) et le décodage FLAC natif uniquement, les opérations d'écriture renvoyant false. Définir DSPARK_NO_FILE_IO omet tous les en-têtes d'E/S de fichiers pour les cibles sans prise en charge du système de fichiers. Le développement de plugins est pris en charge via des adaptateurs natifs VST3 et CLAP ainsi que macOS Audio Unit v2, couvrant les paramètres, l'automation, l'état, la latence, le reporting de queue, le bypass, les configurations mono/stéréo, les sidechains, le transport, les instruments MIDI, le rendu hors ligne et les presets d'usine ; des éditeurs personnalisés peuvent être écrits en HTML/CSS/JavaScript et intégrés via la couche WebView de la plateforme, WebKitGTK étant requis à l'exécution sous Linux.
La sûreté temps réel est documentée comme un contrat par méthode plutôt que comme une propriété globale : la construction, prepare(), la restauration d'état et la configuration réservée à l'initialisation peuvent allouer et ne doivent pas s'exécuter en concurrence avec le traitement ; un processeur préparé a un seul propriétaire de flux audio ; la publication de paramètres suppose normalement un seul écrivain de contrôle et un seul propriétaire audio. La matrice CI de la v1.7.0 couvre Windows (MSVC x64/ARM64), Linux (GCC x64/ARM64, Clang x64), macOS (Clang ARM64), WebAssembly (Emscripten scalaire et SIMD128) et une barrière de compilation embarquée avec E/S de fichiers, exceptions et RTTI désactivés ; iOS et Android sont ciblés par les en-têtes mais n'ont pas de jobs CI dédiés. La CI vérifie aussi l'autosuffisance des en-têtes installés, les builds sans avertissement, les sanitizers, les chemins de publication concurrente, les exemples, les hôtes de smoke test et validateurs de plugins, et la documentation générée. Le job officiel de vecteur de loudness EBU est en best effort car le matériel de test sous licence est téléchargé séparément.
DSParkLab est une application Win32/Direct3D 11 réservée à Windows pour tester les processeurs de manière interactive ; ses sources Dear ImGui et miniaudio intégrées sont confinées à l'application et ne sont pas des dépendances du framework. La documentation comprend une référence d'API générée, un cookbook orienté tâches, des exemples autonomes, un guide des plugins, un modèle de threading, un tableau de métriques de qualité avec réglages mesurés et mises en garde, un guide de migration v1.7.0 et un changelog. La v1.7.0 ajoute des outils de timing et d'édition musicaux, du traitement de hauteur et spectral, un décodage FLAC sans dépendance et la prise en charge des fichiers MIDI, ainsi que des mises à jour de contrat public comme des fenêtres d'analyse sensibles au taux d'échantillonnage et des coefficients de biquad en double précision. Le projet est sous licence MIT et maintenu par Cristian Moresi.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.