Skip to content

Ajout mixeur complet avec reverb et contrôles MIDI#13

Open
patricecolet wants to merge 25 commits intomecaviv:masterfrom
patricecolet:custom-mix
Open

Ajout mixeur complet avec reverb et contrôles MIDI#13
patricecolet wants to merge 25 commits intomecaviv:masterfrom
patricecolet:custom-mix

Conversation

@patricecolet
Copy link
Collaborator

Nouvelles fonctionnalités

Interface Mixeur (750×400px)

  • 7 strips de mixage individuelles avec LED Note On/Off
  • Fader Master Volume (CC70) par sirène - volume indépendant
  • Knob Pan (CC10) avec marqueurs L/C/R
  • Fond gris foncé professionnel

Reverb Freeverb

  • Portée depuis ComposeSirenes2 (allpass, comb, mareverbe)
  • 6 paramètres contrôlables via sliders horizontaux
  • Filtres passe-haut (20-2kHz) et passe-bas (2-20kHz) sur wet uniquement
  • Contrôle complet via Canal MIDI 16

Contrôles MIDI

Canaux 1-7 (sirènes individuelles) :

  • CC10 : Pan
  • CC70 : Master Volume

Canal 16 (reverb globale) :

  • CC64 : Enable (0-63=Off, 64-127=On)
  • CC65 : Room Size
  • CC66 : Dry/Wet
  • CC67 : Damp
  • CC68 : Highpass Filter (20Hz-2kHz)
  • CC69 : Lowpass Filter (2kHz-20kHz)
  • CC70 : Width

Système de volume

  • Double volume : CC7 (original vélocité) × CC70 (master indépendant)
  • Permet de mixer les sirènes et réduire au silence individuellement

Technique

  • Sauvegarde/restauration XML de tous les paramètres
  • Compatible Windows/Linux
  • Tests réussis sur standalone macOS

Correctifs critiques pour le fonctionnement du plugin à tous les sample rates:

1. Sample rate dynamique
   - Remplacer DeuxPieSampleRate hardcodé (44.1kHz) par variable dynamique
   - Ajouter méthodes setSampleRate() dans Sirene, Synth et MidiIn
   - Propager le sample rate depuis prepareToPlay() du DAW
   - Recalculer pitchSchift et incrementationVibrato dynamiquement

2. Corrections d'arrondi
   - Utiliser 100.0f au lieu de 100 pour forcer calculs en float
   - Éviter les divisions entières dans vectorInterval
   - Corriger les calculs de pitch pour tous les sample rates

3. Implémentation vectorInterval
   - Charger les données d'inertie depuis fichiers binaires
   - Utiliser vectorInterval au lieu de calculs approximatifs
   - S7 (piccolo) utilise les données de S5
   - Inertie réaliste des sirènes selon états (Montant, Descandant, etc.)

4. Optimisations
   - Supprimer messages debug trop fréquents causant plantages
   - Atténuer S7 (piccolo) à 30% via constante S7_ATTENUATION
   - Supprimer inertiaFactorTweak obsolète (remplacé par vectorInterval)

Fichiers modifiés:
- Source/Sirene.h/cpp: Variables sample rate + vectorInterval
- Source/synth.h/cpp: Propagation setSampleRate()
- Source/CS_midiIN.h/cpp: Sample rate + incrementationVibrato dynamique
- Source/PluginProcessor.cpp: Propagation + atténuation S7

Problèmes résolus:
✓ Pitch incorrect à sample rates ≠ 44.1kHz
✓ Erreurs d'arrondi dans calculs pitch/vectorInterval
✓ Inertie approximative des sirènes
✓ S7 (piccolo) trop fort
✓ Crashes dus aux messages debug
- Interface 750x400 avec fond gris foncé
- 7 strips: LED Note On/Off, fader Master (CC70), knob Pan (CC10)
- Reverb Freeverb portée depuis ComposeSirenes2
- 6 paramètres reverb sur canal 16: Enable (CC64), Room (CC65), Dry/Wet (CC66), Damp (CC67), HPF (CC68), LPF (CC69), Width (CC70)
- Filtres passe-haut/passe-bas appliqués uniquement sur wet
- Double système volume: CC7 (original vélocité) x CC70 (master indépendant)
- Sauvegarde/restauration de tous les paramètres
- Compatible Windows/Linux
- Created ComposeSiren.icns (518 KB) from Picto_Siren_40x37.png
- Generated Icon_1024.png (1024x1024) for CMake builds
- Updated CMakeLists.txt to use Icon_1024.png
- Updated ComposeSiren.jucer to reference icon (smallIcon/bigIcon)
- Icon now displays properly in macOS Finder and Dock
- Scripts/copy_icon.sh: Shell script to copy icon during Xcode build
- Scripts/ICON_BUILD_PHASE.md: Detailed instructions (3 methods)
- Scripts/add_icon_build_phase.py: Automated Xcode project modifier
- Scripts/README.md: Quick start guide

Usage: Add as Xcode Build Phase or use Python script for automation
Updated paths to use PROJECT_DIR variable for better compatibility
- Added ComposeSiren.icns (518 KB) to GitHub release
- Added Icon_1024.png (8.9 MB) to GitHub release
- Updated release notes to display icon image at the top
- Updated commit hash to c80dca1 (latest)
- Add Packaging/Linux/MakePackage.cmake for Debian package generation
- Update CMakeLists.txt to include Linux packaging
- Fix ARM64 compilation with -fPIC flag in Assets/CMakeLists.txt
- Improve resource path detection in Source/synth.cpp for Linux
  * Searches /usr/share/ComposeSiren/Resources/ first
  * Falls back to multiple locations for compatibility
- Update README.md with Linux build and installation instructions
- Add GitHub release publishing documentation
- Update .gitignore for builds/ and config.h

The generated .deb package is clean (24MB, no JUCE headers/tools included)
and installs to /usr/bin/ComposeSiren with resources in /usr/share/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant